我無法運行這段代碼。它表示觸發器是由編譯錯誤創建的,但沒有解釋什麼是錯誤的,並沒有給出任何輸出。下面是代碼和我給出的錯誤。我在Oracle 11g R1上,正在使用PL/SQL。SQL - Oracle 11g - PL/SQL - 觸發器編譯錯誤
CREATE OR REPLACE TRIGGER checkRecommendedAge
BEFORE INSERT OR UPDATE ON Loan
FOR EACH ROW
DECLARE
borAge number;
ex exception;
BEGIN
SELECT count(*) INTO borAge
FROM Loan
WHERE dateOut =: new.dateOut;
IF borAge < 18 THEN
dbms.output.put_line('Row added to Book table succesful');
ELSE
raise ex;
END IF;
EXCEPTION
WHEN EX THEN
raise_application_error("Error");
END;
/
錯誤:
Warning: Trigger created with compilation errors.
SQL> SHOW ERRORS
Errors for TRIGGER CHECKRECOMMENDEDAGE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PLS-00801: internal error [ph2csql_strdef_to_diana:bind]
6/2 PL/SQL: SQL Statement ignored
7/7 PL/SQL: ORA-06544: PL/SQL: internal error, arguments:
[ph2csql_strdef_to_diana:bind], [], [], [], [], [], [], []
10/3 PL/SQL: Statement ignored
10/3 PLS-00201: identifier 'DBMS.OUTPUT' must be declared
17/2 PL/SQL: Statement ignored
17/27 PLS-00201: identifier 'Error' must be declared
任何幫助,將不勝感激
感謝
嘗試在編譯後發出'SHOW ERRORS'。 – Chandu 2012-01-13 13:52:12
@Cybernate嗨,謝謝!我更新了原始帖子 – Brian 2012-01-13 13:59:48
@Brian - 你確定沒有複製和粘貼錯誤?該錯誤消息引用一個標識符「dbms.output」,這意味着當您引用'dbms_output'包時您犯了一個錯字。但是你的代碼似乎沒有那個錯字。當該文本未出現在發佈代碼中的任何位置時,該錯誤消息還引用標識符「錯誤」。另外,你可以發佈完整的觸發器定義,包括'CREATE'嗎? – 2012-01-13 14:29:34