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 に答える