① oracle導完數據為什麼要編譯無效對象
網友採納如果無效對象的數量很少,那麼你可以逐個編譯這些對象. ALTER PACKAGE my_package COMPILE; ALTER PACKAGE my_package COMPILE BODY; ALTER PROCEDURE my_procere COMPILE; ALTER FUNCTION my_function COMPILE; ALTER TRIGGER my_trigger COMPILE; ALTER VIEW my_view COMPILE;
② 如何在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。
③ oracle 編譯出現PLS-00103 CREATE 錯誤!編譯失效!
函數沒有語法問題,DEPTNO = 7788對應的名稱或多重?
④ oracle 觸發器為什麼編譯不通過 大家幫忙看看。
觸發器應該沒有錯誤,如果編譯報錯,可能是當前用戶沒有訪問dbms_lock包的許可權,使用SYS用戶授權一下就可以了。
grant execute on DBMS_LOCK to 用戶名稱;
⑤ 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;
⑥ oracle 過程 重新編譯也無效
編譯完成,不代表裡面語句沒問題,這種情況是存儲過程里存在某種錯誤
在 SQL *Plus 或者 PL/SQL Developer 的 Command Windows 中,執行
show errors procere USP_EXCEPTION;
查看一下錯誤是什麼.
我的修改如下:
CREATE OR REPLACE PROCEDURE USP_EXCEPTION(EMPNO INTEGER, --批次ID
P_FM NUMBER, --分母
P_FZ NUMBER, --分子
P_RESULT OUT NUMBER --結果
) IS
V_RAISE EXCEPTION; --異常處理
type type_table_pcmx is varray(4) of varchar2(20);
TABLE_PCMX type_table_pcmx;
BEGIN
IF P_FZ = 0 THEN
RAISE V_RAISE;
END IF;
P_RESULT := P_FM / P_FZ;
SELECT ENAME, EMPNO, JOB, DEPTNO
INTO TABLE_PCMX(1),TABLE_PCMX(2),TABLE_PCMX(3),TABLE_PCMX(4)
FROM EMP
WHERE EMPNO = EMPNO;
EXCEPTION
WHEN V_RAISE THEN
RAISE_APPLICATION_ERROR(-20010, 'ERROR:分子為零!');
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20011, 'ERROR:批次明細不存在!');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20012, 'ERROR:數據錯誤!');
END;
⑦ oracle存儲過程提示編譯完成但存在錯誤,如何查看錯誤
1、首先打開PL/SQL Developer軟體,新建sql窗口。
⑧ Oracle創建的包為什麼會出現編譯錯誤
package pkg_score_218 這個應該是package頭,裡面只要函數的聲明就行了
再定義一個package體,裡面才是寫函數的實現。
⑨ ORACLE 中無法編譯包,查過沒有鎖,是什麼原因
報什麼錯誤呢? 一般出現無法編譯的情況 都是有過程或者包在在正被執行而被加鎖,另外其他過程或者包當中如果包含了其他的包或者過程的話,也會是鎖定狀態無法編譯。