この関数を呼び出すのが好きです:
CREATE OR REPLACE PACKAGE orders_salary_manage2 AS
FUNCTION total_calc(p_order in NUMBER)
RETURN NUMBER;
END;
CREATE OR REPLACE PACKAGE BODY orders_salary_manage2 AS
tot_orders NUMBER;
FUNCTION total_calc(p_order in NUMBER)
RETURN NUMBER
IS
c_price product.unit_price%type;
c_prod_desc product.product_desc%type;
v_total_cost NUMBER := 0;
CURSOR c1 IS
SELECT product_desc, unit_price
FROM product
WHERE product_id IN (SELECT fk2_product_id
FROM order_line
WHERE fk1_order_id = p_order);
BEGIN
OPEN c1;
LOOP
FETCH c1 into c_prod_desc, c_price;
v_total_cost := v_total_cost + c_price;
EXIT WHEN c1%notfound;
END LOOP;
CLOSE c1;
return v_total_cost;
END;
このトリガーから:
CREATE OR REPLACE TRIGGER trg_order_total
BEFORE DELETE ON placed_order
FOR EACH ROW
DECLARE
v_old_order NUMBER := :old.order_id;
BEGIN
total_calc(v_old_order);
END;
しかし、私はこのエラーを受け取り続けます。これだけのエラー番号がないことに注意してください:
4 行目のエラー: PL/SQL: ステートメントは無視されました
- 削除する前にplaced_order
- 行ごとに
- 宣言する
- v_old_order NUMBER := :old.order_id;
- 始める
pl/sql は初めてで、何が問題を引き起こしているのかわかりません。ユーザーが注文テーブルから注文を削除すると、トリガーは関数を呼び出して注文のすべての製品を追加する必要があります。
ありがとうございました