Création dynamique de trigger dans une procédure stockée
Bonjours
J'ai la table
Code:
1 2 3 4 5 6 7
| CREATE TABLE matable
(
"CODE_POSTAL" CHAR(5 BYTE),
"NOM" VARCHAR2(38 BYTE),
"INSERT_DATE" DATE,
"UPDATE_DATE" DATE
) |
sur la quelle je veux créer un trigger dynamiquement.
Dans un 1er temps,
Quand je fais
Code 1
Code:
1 2 3 4 5 6 7
| create or replace
TRIGGER UPDATE_matable_TRIGGER
BEFORE UPDATE ON matable
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.UPDATE_DATE FROM DUAL;
END; |
ça marche! :D
Quand je fais
Code 2
Code:
1 2 3 4
| begin
EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER UPDATE_matable_TRIGGER BEFORE UPDATE ON matable FOR EACH ROW BEGIN
SELECT SYSDATE INTO :new.UPDATE_DATE FROM DUAL;END;';
end;/ |
ça marche! :D
Mais que je met ce code dans une procédure stocké d'un package
Code:
1 2 3 4 5 6 7 8 9
| PROCEDURE create_update_trigger(tableName IN VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER UPDATE_' || tableName || '_TRIGGER BEFORE UPDATE ON ' || tableName || ' FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.UPDATE_DATE FROM DUAL;
END;';
EXCEPTION
WHEN OTHERS THEN RAISE;
END create_update_trigger; |
et que je fais appel à cette procédure
Code:
1 2 3 4
| begin
UPDATER.create_update_trigger('matable');
end;
/ |
on me réponds:
Code:
01031. 00000 - "insufficient privileges"
:cry:
Ce que je ne comprend pas c'est pourquoi.8O
Car j'arrive très bien a créer un trigger sur cette table
que ce soit avec le code 1 ou le code 2;
Mais dès que je veux passé par une procédure stocké,
ça ne marche plus, et ne je vois pas pourquoi le problème viendrais des droits
Car ce sont tous des objets d'un même schéma (MON schéma)
Quelqu'un peut-il me dire où est la faute?