編譯存儲過程ora04021
1. PL/sql建好存儲過程,編譯也成功了,但是用execute執行的的 提示許可權不足(ora-01031)
用你有dba許可權的用戶執行這個試試。
;
如果還報錯就要看代碼了。
2. ORACLR 存儲過程 創建的過程帶有編譯錯誤。
去掉 DECLARE
3. oracle 編譯包的時候,一直提示正在編譯
編譯的存儲過程的時候,程序死住,等待一會出現ora-04021錯誤解決辦法:
1.可能被鎖住
查看v$lockedselect b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
where a.SID = b.SID
得到死鎖session的SID,SERIAL#參看這個是否為你自己用戶下的,然後kill掉session
2.可能被掛起
查看v$session_waitselect b.serial#,a.* from v$session_wait a,v$session
bwhere a.sid = b.sid得到等待的session的sid和serial#3.查看dba_ddl_locksselect
session_id sid, owner, name, type,
mode_held held, mode_requested request
from dba_ddl_locks
where name = '&your_package_name'
4. 我寫了一個PLSQL存儲過程,編譯時報PL/SQL: ORA-00947: 沒有足夠的值,問題有點奇怪。
insert into emp1(empno,ename,job,sal,deptno) values cur;
這行代碼,這樣寫試一下,看看是否好用。
insert into emp1(empno,ename,job,sal,deptno) values (cur.empno,cur.ename,cur.job,cur.sal,cur.deptno);
5. 編譯存儲過程時出現Ora-04021錯誤的如何解決
編譯的存儲過程的時候,程序死住,等待一會出現ora-04021錯誤解決辦法:1.可能被鎖住查看v$lockedselect b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session bwhere a.SID = b.SID得到死鎖session的SID,SERIAL#參看這個是否為你自己用戶下的,然後kill掉session2.可能被掛起查看v$session_waitselect b.serial#,a.* from v$session_wait a,v$session bwhere a.sid = b.sid得到等待的session的sid和serial#3.查看dba_ddl_locksselect session_id sid, owner, name, type,mode_held held, mode_requested requestfrom dba_ddl_lockswhere name = '&your_package_name'
6. 存儲過程一直報錯 但是編譯成功了 也沒有錯 調用時一直不成功報錯
下面是問題:
Oraclede 環境中,客戶那邊提出,執行存儲過程時出錯,信息:DBCustomException: ORA-00900: invalid SQL statement
關於這個問題之前也遇到過,一直找不到原因,沒解決,時好時壞,,由於客戶大部分是SQL Server,也就沒太在意,現在終於麻煩來了。
我用自己創建的用戶,通過P/L SQL 登陸,執行以下語句
--創建表
create table ttt
(
aa varchar(20)
)
--創建存儲過程
CREATE OR REPLACE PROCEDURE myproc
AS BEGIN
select * from ttt;
END
--執行
exec myproc
執行存儲過程時,開始報錯:ORA-00900:無效SQL語句 (上面那個錯誤的中文版-_-!)
這時候看右邊的存儲過程如下,有個紅叉,
7. 存儲過程編譯出錯表或視圖(與存儲過程在同一用戶下)不存在,急等!!!
首先,存儲過程在a,你得把用的b用戶的表給a用戶查詢許可權,然後在過程裡面用b的表是在表名前面加個b用戶名在點一下,後面就可以用b的表了
8. oracle存儲過程提示編譯完成但存在錯誤,如何查看錯誤
1、首先打開PL/SQL Developer軟體,新建sql窗口。
9. 這個存儲過程哪裡錯了啊報 ORA-06502: PL/SQL: 數字或值錯誤 : 數值精度太高 ORA-06512: 在 line 14
我自己建了個表,然後編譯你的存儲過程,得到的結果是正確的。不知道你是什麼問題。
10. 為什麼oracle 新建存儲過程時,出現「創建過程帶有編譯錯誤」 ,求大神們幫助。因為沒財富了,所以沒懸賞了
先不說別的,就是insert into後必須要提交,否則插不進數據造成表被鎖
再一個,你那倆參數ASSIGN_PK和CLASS_PK 是要輸入的么?
輸入的話要加上in,要不是輸入,在後邊取出的,至少也得賦值,這里就姑且當做你是要輸入的兩個參數吧。
create or replace procere add_t
(ASSIGN_PK IN VARCHAR2 ,
CLASS_PK IN VARCHAR2)
IS
BEGIN
INSERT INTO add_t values(''||ASSIGN_PK||'',''||CLASS_PK||'');
commit;
END;