第 2 行的错误:PL/SQL:语句被忽略

Posted

技术标签:

【中文标题】第 2 行的错误:PL/SQL:语句被忽略【英文标题】:ERROR at line 2: PL/SQL: Statement ignored 【发布时间】:2014-05-29 22:26:43 【问题描述】:
 CREATE OR REPLACE TRIGGER log_FAMILY_increase
  AFTER UPDATE OF FAMILY_INCOME ON STUDENT
  FOR EACH ROW
 BEGIN
   INSERT INTO STUDENT_2 (NAME, SURNAME, NEW_FAMILY_INCOME)
   VALUES (:NEW.NAME,SURNAME, :NEW.FAMILY_INCOME, 'New INCOME');
 END;

在 oracle 10g 中,我收到以下错误消息: 第 2 行出现错误:PL/SQL:语句被忽略

【问题讨论】:

你搞定了吗? 仍然无法正常工作,我也得到了这个代码同样的错误!!在插入或更新 FAMILY_INCOME、BIRTHDATE 或 DELETE 之前创建或替换触发器 插入然后 DBMS_OUTPUT.PUT_LINE('Inserting');当更新(家庭收入)然后 DBMS_OUTPUT.PUT_LINE('更新家庭收入');当更新(生日)然后 DBMS_OUTPUT.PUT_LINE('更新生日');当删除然后 DBMS_OUTPUT.PUT_LINE('DELETING');结束案例;结束; 在下面查看我的回复,我更新了我的声明.. 【参考方案1】:

您在此处缺少列名“(name, surname, new_family_income)”,因为您试图将 4 个值插入 3 列中。我切换了语句,不列出列,也许这会有所帮助..

CREATE OR REPLACE TRIGGER log_family_increase
   AFTER UPDATE OF family_income
   ON student
   REFERENCING NEW AS new OLD AS old
   FOR EACH ROW
BEGIN
   INSERT INTO student_2 
        VALUES (:new.name,
                :new.surname,
                :new.family_income,
                'New INCOME');
END;

【讨论】:

它的效果非常好,我应该知道第四列,因为它是从另一个示例中编辑的!! @user3689309 - 尽管省略字段列表解决了这个问题,但我强烈建议在您编写的每个 INSERT 语句中包含字段列表。首先,当新列添加到您的表中时,它将保护代码 - 您不必返回并修复该表的每个 INSERT 语句。其次,如果这在我的办公桌上进行代码审查,它会回来滴血......呃,红色墨水。 :-) 分享和享受。

以上是关于第 2 行的错误:PL/SQL:语句被忽略的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 PL/SQL 触发器会引发“错误(2,2):PL/SQL:语句被忽略”和“错误(2,5):PLS-00204:函数或伪列'EXISTS'”错误?

PLS-00382:表达式类型错误,PL/SQL:语句被忽略

PL/SQL: SQL 语句被忽略 - 创建一个过程得到编译错误

ORACLE:错误错误(6,3):PL/SQL:SQL 语句被忽略和错误(8,3):PL/SQL:ORA-00933:SQL 命令未在过程中正确结束

PL/SQL:PLS-00382:表达式类型错误。语句被忽略

自定义 SQL 函数 - PL/SQL:语句被忽略