1

你能告诉我我在这里做错了什么得到错误的绑定错误吗?

代码是管理库存。我必须确定库存何时达到最低库存量,然后重新订购该产品。

 CREATE OR REPLACE TRIGGER REORDER_STOCK
 BEFORE INSERT OR UPDATE OF STK_QOH,STK_MIN ON STOCK
 FOR EACH ROW

 DECLARE
 V_STK_QOH stock.STK_QOH%TYPE;
 V_STK_MIN stock.STK_MIN%TYPE;
 V_STK_REORDER STOCK.STK_REORDER%TYPE;

BEGIN 

 SELECT STK_QOH, STK_MIN, STK_REORDER
INTO V_STK_QOH, V_STK_MIN, V_STK_REORDER
FROM STOCK
WHERE STK_ID= :NEW.STK_ID;

IF:V_STK_QOH<= :STK_MIN THEN
:V_STK_REORDER := 1;
ELSE :V_STK_REORDER :=0;
END IF;

 END;
/
4

1 回答 1

2

这部分:

IF:V_STK_QOH<= :STK_MIN THEN
:V_STK_REORDER := 1;
ELSE :V_STK_REORDER :=0;
END IF;

应该只是:

IF V_STK_QOH <= STK_MIN THEN
    V_STK_REORDER := 1;
ELSE 
    V_STK_REORDER :=0;
END IF;

不确定“重新订购该产品”需要什么,但如果您只想设置STOCK.STK_REORDER为“1”,如果它达到其最低手头数量,那么这就是您所需要的:

CREATE OR REPLACE TRIGGER REORDER_STOCK
 BEFORE INSERT OR UPDATE OF STK_QOH,STK_MIN ON STOCK
 FOR EACH ROW

BEGIN

   IF :NEW.STK_QOH <= :NEW.STK_MIN THEN
      :NEW.STK_REORDER := 1;
   ELSE
      :NEW.STK_REORDER := 0;
   END IF;

END;
/
于 2012-11-08T19:48:42.887 回答