第2行错误:PL/SQL:语句被忽略,不确定原因 [英] Error at line 2: PL/SQL: Statement ignored and im not sure why
问题描述
运行代码时,我不断收到一条错误消息,指出该语句在第2行被忽略
when i run my code i keep getting an error saying that the statement is being ignored at line 2
CREATE OR REPLACE TRIGGER invalid_Year
BEFORE INSERT OR UPDATE OF Financial_Year ON Area_Offence
FOR EACH ROW
BEGIN
IF :NEW.Financial_Year > (SELECT to_char(Max(Offence_Date), 'YYYY') FROM Offence) THEN
dbms_output.put_line('Invalid Year entered');
raise_application_error(-20001, 'Invalid Year entered');
END IF;
END invalid_Year;
推荐答案
dbms_output.put_line('Invalid Year entered');
没有tty或终端可用于触发.进程上下文在oracle服务器进程之一中,而不在用户进程中.因此,投诉发生在这条线上.
There is no tty or terminal for a trigger. The process context is in one of the oracle server processes not the user process. So, the complaint arises on this line.
我认为在oracle 9i之前的较早版本的oracle中都可以.
I think this was okay in older versions of oracle up to oracle 9i.
进行了一些更改.见下文.我在交换机上睡着了.
Made a few changes. See below. I was asleep at the switch.
[更正]我查看了一些旧代码,没有触发器具有dbms_output调用. 我在存储过程中看到了它.所以,我得出结论,这是永远不允许的
[correction] I looked in some old code, no triggers have dbms_output calls. I saw it in stored procedures. So, I would conclude it never was allowed
CREATE OR REPLACE TRIGGER invalid_Year
BEFORE INSERT OR UPDATE OF Financial_Year ON Area_Offence
FOR EACH ROW
DECLARE
offense_date varchar2(4):=NULL;
BEGIN
SELECT to_char(Max(Offence_Date), 'YYYY' )
into offense_date
from Offence;
IF :NEW.Financial_Year > Offense_Date THEN
dbms_output.put_line('Invalid Year entered');
raise_application_error(-20001, 'Invalid Year entered');
END IF;
END invalid_Year;
这篇关于第2行错误:PL/SQL:语句被忽略,不确定原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!