【问题标题】:Oracle PL/SQL Cursor in Trigger触发器中的 Oracle PL/SQL 游标
【发布时间】:2014-11-16 15:43:12
【问题描述】:

我得到了这个触发器,似乎没问题,但我得到了错误:

触发器:

CREATE OR REPLACE TRIGGER TRG_TABLE_BI
BEFORE INSERT
ON TABLE
FOR EACH ROW
DECLARE
    CURSOR cur_list IS
        SELECT emp, name, day, salary, id,phone
        FROM TABLE NATURAL JOIN OTHERTABLE
        WHERE emp = :NEW.emp AND name = :NEW.name AND id = :NEW.id;

    curChoice cur_list%ROWTYPE;

BEGIN
    OPEN cur_list;
    LOOP
        FETCH cur_list INTO curChoice;
        EXIT WHEN cur_list%NOTFOUND;
        dbms_output.put_line(curchoice.id);
        dbms_output.put_line(curChoice.emp);
        dbms_output.put_line(curchoice.name);
    END LOOP;
    CLOSE cur_list;

END;
/

我得到了那些错误:

PLS-00049: bad bind variable 'NEW.emp'

如果我在 WHERE 子句中删除游标声明中的 ':',则会出现更多错误

谢谢。

【问题讨论】:

  • 我想你正在使用一些认为 :new.emp 是它的变量的编辑器。然后关闭变量绑定
  • 只是退后一步来阐明这种情况下的调试价格。始终尝试 COMPILE 您在 SQL*Plus 中的代码,然后使用 SHOW ERROR 查看错误堆栈。这将非常有用。在调试PL/SQL 代码中的错误时,您将节省大量时间。

标签: oracle plsql triggers cursor


【解决方案1】:

好的,我发现了错误,在我的 WEHRE 子句中的游标声明中,我不得不删除

emp = :NEW.emp AND name = :NEW.name

因为我当前插入的表中没有这样的列。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2011-07-29
    • 1970-01-01
    • 2023-04-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多