無法編譯存儲過程
A. pl/sql 中建個一個存儲過程,編譯不過去,問題在哪
create table abc,這個表abc,什麼都沒有指定,至少要指定ABC表的一個欄位,還有欄位的類型。
另外,這個存儲過程只能執行一次,因為執行一次之後,abc表被創建了,再執行的時候,就會創建重復的名字了。所以在執行之前,你最好先判斷庫中有沒有abc表,如果有,先執行drop table abc。再創建。
B. 如何在Oracle中重編譯所有無效的存儲過程
:在SQL_PLUS中:spool ExecCompProc.sql select 'alter procere ' ||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql;整理成一個存儲過程:Create Or Replace Procere Zl_Compile_Invalid_Procere AsStrsql Varchar2(200);BeginFor x In (Select Object_Name From All_Objects Where Status = 'INVALID' And Object_Type = 'PROCEDURE') LoopStrsql := 'Alter Procere ' || x.Object_Name || ' Compile';Begin Execute Immediate Strsql; Exception--When Others Then Null; When OTHERS Then dbms_output.put_line(Sqlerrm); End;End Loop;End;最後執行:exec Zl_Compile_Invalid_Procere;如果要看到無法重編譯的過程的出錯信息,需要執行前設置set serverout on。
C. 資料庫存儲過程編譯出錯
可用第三方工具檢查錯誤。
如以下存儲過程:
D. 存儲過程編譯出錯表或視圖(與存儲過程在同一用戶下)不存在,急等!!!
首先,
存儲過程
在a,你得把用的b用戶的表給a用戶查詢許可權,然後在過程裡面用b的表是在表名前面加個b用戶名在點一下,後面就可以用b的表了
E. oracle存儲過程編譯不通過,求各位大蝦幫我看下
FOR i IN 1...1000 LOOP 語法錯誤 是兩個點!
,INSERT ID,NAME,age,email,sex,birthday,create_time INTO person VALUES(
這一段的insert 這個一行也是有錯誤
--1-birthday DATE 與birthdaty:=DATE'1992-05-01'; 不是同一個變數
--以下是更過後的,可以參考下 希望對你有幫助1
create or replace procere insert_person(
NUM IN INT
)
AS
ID INT;
NAME VARCHAR2(10);
age NUMBER;
email VARCHAR2(10);
sex NUMBER;
birthday DATE;
create_time TIMESTAMP;
BEGIN
ID:=NUM;
NAME:='張三';
age:=25;
email:='shangsan';
birthday:=to_date('1992-05-01','yyyy-mm-dd');
create_time:=SYSTIMESTAMP;
FOR i IN 1..1000 LOOP
sex:=1;
IF(i<500)THEN
sex:=0;
END IF;
INSERT INTO person( ID,NAME,age,email,sex,birthday,create_time) VALUES(
NUM+i,
NAME||i,
age,
email||i||'@163.com',
sex,
birthday,
create_time
);
END LOOP;
COMMIT;
dbms_output.put_line('執行結束');
END;
F. Oracle 定義存儲過程 不能執行,處於無效狀態。
無效狀態有兩種可能,一種是你的存儲過程編輯沒有成功,創建了,但裡面有語法錯誤。
還有一種是存儲過程使用的表有結構上的改變,需要重新編譯一下。
你重新編譯一下,如果不成功,就是有語法問題,你需要修改存儲過程。
G. oracle 存儲過程無法編譯,刪除,一旦執行該操作PLSQL就會出現未響應
存在無效對象,用plsql菜單中的工具先「編譯無效對象」
H. plsql編譯存儲過程卡死
1、查看一下Oracle資料庫中的正在運行的進程是否正在運行該程序,如果有的話把進程停止
2、全部關閉重開或者換一個PLSQL試一下,看看是不是PLSQL本身導致的問題
3、如果都不好用先嘗試重啟一下PLSQL所在的伺服器(如果可以重啟的話)
先試試上述方法
I. ORACLE 存儲過程被鎖,編譯不了,怎麼解鎖
可用SYS登錄,然後查詢如下語句:
查找存儲過程OPERATIONDATA_IMP被哪些session鎖住而無法編譯
select * FROM dba_ddl_locks where name =upper('OPERATIONDATA_IMP');
從而得到session_id,然後通過
select t.sid,t.serial# from v$session t
where t.sid=&session_id;
得到sid和serial#
最後用alter system kill session 'sid,serial#'; kill 相關session即可。
J. ORACLE 存儲過程無法編譯,編譯就卡死
你怎麼查的鎖?v$locked_object?dba_ddl_locks查了沒,可能是ddl的鎖,如果不能編譯,一編譯就死,也可能是ddl的鎖導致的,以前碰到過。如果能找到鎖,那就簡單了。
不過還碰到過一種特別扯淡的情況,關掉自己的連接,然後換一台電腦從新來過,就OK了,這種情況也碰到過。