ид нравится называть эту функцию:Вызов функции в перед тем удалить триггер
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
- ДЛЯ КАЖДОЙ ROW
- DECLARE
- v_old_order НОМЕР: =: old.order_id;
- НАЧАТЬ
им новых для PL/SQL и просто не уверен, что является причиной проблемы. Когда пользователь удаляет заказ из таблицы заказов, триггер должен вызывать функцию для добавления всех продуктов в заказе.
Спасибо
Спусковой код, который вы показали не вызывает 'add_order_func' функцию на всех. Вы имеете в виду, что вы получаете эту ошибку из текущего кода запуска, как показано, или вы получаете эту ошибку при попытке изменить ее для вызова функции? Если первое, то, возможно, проблема связана с процедурой 'total_calc', которую вы вызываете. Если последний, тогда покажите код запуска, который на самом деле пытается вызвать функцию. –
Привет и спасибо за ваш ответ, извините, я показал неправильную функцию, я работал часами, а мои мозги отключились. Я в основном пытаюсь выполнить функцию, когда происходит удаление, и параметр, переданный функции, должен быть порядковым_идом (PK) строки – user2241161
, мы пропускаем фактическое описание ошибки (ORA-XXXXX: bla bla bla ..) – Sebas