坏绑定变量触发pl / sql

时间:2015-12-25 16:07:22

标签: oracle plsql

我对我创建的触发器有这个常见问题。我花了很长时间查看任何错误,但我找不到任何错误! 我打算在我的表命令上创建一个触发器,以便在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'

0 个答案:

没有答案