Я пытаюсь получить этот код сортируется, и он компилируется, но когда я проверить, удалив запись, если дает: Недопустимый идентификаторOracle триггер не работает
ошибка, вероятно, в: старый часть, но я просто не могу понять.
Это мой код.
create or replace trigger t_OnDeleteCategory
create or replace trigger t_OnDeleteCategory
before delete on Categorie
for each row
declare
v_textMail varchar2(2000);
v_emailAdres MailAbonnee.emailAdres%type;
v_Voornaam MailAbonnee.voornaam%type;
v_Achternaam MailAbonnee.Achternaam%type;
c_cursor SYS_REFCURSOR;
v_sql varchar2(2000);
v_categorienaam categorie.naam%type;
begin
v_categorienaam := :old.naam;
--1) mailbericht verzenden
v_sql := 'select voornaam, achternaam, emailAdres from MailAbonnee where id in (select mailAbonneeID from CategorieAbonnement where categorieNaam = v_categorienaam)';
open c_cursor for v_sql;
loop
fetch c_cursor into v_Voornaam, v_Achternaam, v_emailAdres;
exit when c_cursor%notfound;
v_textMail := 'Beste ' || v_Voornaam || ' ' || v_Achternaam || ', uw abonnement is opgeheven voor Categorie '|| v_categorienaam || '.';
sendMailAbonnee(v_textMail, v_emailadres);
end loop;
--2) verwijder alle abonnementen
delete from CategorieAbonnement where categorieNaam = v_categorienaam;
--3) pas alle nieuwsberichten aan
update Nieuwsbericht set categorieNaam = '' where categorieNaam = v_categorienaam;
end;
Есть ли причина, по которой вам нужно использовать динамический SQL в вашем триггере? Здесь, похоже, это не обязательно. Но, возможно, вы упростили проблему, чтобы опубликовать здесь, и в вашем фактическом коде есть некоторая причина, по которой вам нужен динамический SQL. –
Можете ли вы показать нам структуру таблицы для 'Categorie' и' MailAbonnee'? – Drumbeg
У вас есть «создать или заменить триггер t_OnDeleteCategory» дважды в начале –