Oracle SQL:任何人都可以帮我解决Error(2,32):PLS-00049:错误的绑定变量'WORKED_HOURS'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle SQL:任何人都可以帮我解决Error(2,32):PLS-00049:错误的绑定变量'WORKED_HOURS'相关的知识,希望对你有一定的参考价值。

任何人都可以帮我解决错误(2,32):PLS-00049:错误的绑定变量'WORKED_HOURS'

    CREATE OR REPLACE TRIGGER uprava_prac_casu
    BEFORE
    UPDATE OF worked_hours
    ON Attendance_of_employee
    FOR EACH ROW
    BEGIN
    IF (:new.worked_hours>15) THEN :worked_hours:=15; END IF;

    IF (:new.worked_hours<3) THEN :worked_hours:=3; END IF;
    END;
    /


Trigger UPRAVA_PRAC_CASU compiled

Errors: check compiler log

从编译器日志:错误(2,32):PLS-00049:错误的绑定变量'WORKED_HOURS'

然后我试过这个:

CREATE OR REPLACE TRIGGER uprava_prac_casu
    BEFORE
    UPDATE OF worked_hours
    ON Attendance_of_employee
    FOR EACH ROW
    BEGIN
    IF (:new.worked_hours>15) THEN :old.worked_hours:=15; END IF;

    IF (:new.worked_hours<3) THEN :old.worked_hours:=3; END IF;
    END;
    /




> Error report -
>     ORA-04085: nemožno zmeniť hodnotu referenčnej premennej OLD
>     04085. 00000 -  "cannot change the value of an OLD reference variable"
>     *Cause:    Old values can only be read and not changed.
>     *Action:   Do not attempt to change an old variable.
答案

你可能只是向后设置你的“旧”和“新”。或者,您可能想要调整“新”值。我在猜测后者:

CREATE OR REPLACE TRIGGER uprava_prac_casu
BEFORE UPDATE OF worked_hours
ON Attendance_of_employee
FOR EACH ROW
BEGIN
    IF (:new.worked_hours > 15) THEN :new.worked_hours := 15; END IF;
    IF (:new.worked_hours < 3) THEN :new.worked_hours := 3; END IF;
END;

您收到错误是因为您只能更新触发器中的新值,而不是旧值。

另一答案

因为它明确表示你无法修改:old.worked_hours

您无法更改OLD结构的字段值;尝试这样做会引发ORA-04085错误。您可以修改NEW结构的字段值。

以上是关于Oracle SQL:任何人都可以帮我解决Error(2,32):PLS-00049:错误的绑定变量'WORKED_HOURS'的主要内容,如果未能解决你的问题,请参考以下文章

我试图拟合和评分逻辑回归模型但出现错误,任何人都可以帮我解决这个错误

谁能帮我把我的 SQL 连接到这个源代码它对我不起作用

有人可以帮我在 PL/SQL Oracle 中实现以下触发器吗?

oracle sql错误:不同的情况

Oracle SQL - 任何人都可以提高效率吗?

任何人都可以帮我处理这些 python 程序吗?