第2行错误:PL/SQL:语句被忽略,不确定原因 [英] Error at line 2: PL/SQL: Statement ignored and im not sure why

查看:119
本文介绍了第2行错误:PL/SQL:语句被忽略,不确定原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

运行代码时,我不断收到一条错误消息,指出该语句在第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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆