我无法运行这段代码。它表示触发器是由编译错误创建的,但没有解释什么是错误的,并没有给出任何输出。下面是代码和我给出的错误。我在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