我对我创建的触发器有这个常见问题。我花了很长时间查看任何错误,但我找不到任何错误! 我打算在我的表命令上创建一个触发器,以便在ORDER中的项达到重新订购级别时向用户发出警告。
CREATE OR REPLACE TRIGGER ORDERS_CHECK AFTER
INSERT OR UPDATE ON ORDERS
FOR EACH ROW
DECLARE
V_QTY ODETAILS.QTY%TYPE;
V_QOH PARTS.QOH%TYPE;
V_OLEVEL PARTS.OLEVEL%TYPE;
V_LEVEL_STATS EXCEPTION;
BEGIN
SELECT DOD.QTY, P.QOH, P.OLEVEL INTO V_QTY, V_QOH, V_OLEVEL
FROM PARTS P, ODETAILS OD
WHERE P.PNO = OD.PNO
AND OD.QTY = :NEW.QTY;
IF :OLD.QTY <= :NEW.V_OLEVEL THEN
RAISE V_LEVEL_STATS;
ELSE
DBMS_OUTPUT.PUT_LINE('Process has been completed successfully');
END IF;
EXCEPTION
WHEN V_LEVEL_STATS THEN
RAISE_APPLICATION_ERROR(-20002, 'Warning: Product with ID '|| :OLD.PNO ||'
contains only '|| :NEW.QTY ||' left over!');
END;
编译器错误:
Error(13,17): PLS-00049: bad bind variable 'NEW.QTY'
Error(15,5): PLS-00049: bad bind variable 'OLD.QTY'
Error(15,17): PLS-00049: bad bind variable 'NEW.V_OLEVEL'
Error(23,64): PLS-00049: bad bind variable 'OLD.PNO'
Error(23,95): PLS-00049: bad bind variable 'NEW.QTY'