Sono riuscito a compilare senza errore il seguente trigger:
ma quando cancello una riga da MIA_TABELLA ottengo un messaggio di errore che fa riferimento a:codice:CREATE TRIGGER DROP_TABELLA AFTER DELETE ON MIA_TABELLA FOR EACH ROW DECLARE NOME_TABELLA VARCHAR2(100); NOME_TABELLA_DA_CANCELLARE VARCHAR2(100); BEGIN /* Qui leggo il campo NOME della riga cancellata, e lo converto in upper case */ SELECT UPPER(:OLD.NOME) INTO NOME_TABELLA FROM MIA_TABELLA; /* Qui leggo, tra tutte le tabelle presenti nel database, la tabella il cui nome contenga la stringa in 'NOME_TABELLA' */ SELECT TNAME INTO NOME_TABELLA_DA_CANCELLARE FROM SYS.TAB WHERE TNAME LIKE '%:NOME_TABELLA%'; /* Qui cancello la tabella 'NOME_TABELLA_DA_CANCELLARE' */ EXECUTE IMMEDIATE 'DROP TABLE :NOME_TABELLA_DA_CANCELLARE CASCADE'; END;
ORA-06512: a "DROP_TABELLA", line 6
ORA-04088: errore durante esecuzione del trigger 'DROP_TABELLA'
Come mai?
Grazie![]()