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'的主要内容,如果未能解决你的问题,请参考以下文章
我试图拟合和评分逻辑回归模型但出现错误,任何人都可以帮我解决这个错误