Bonjour à tous,
Je m'adresse à vous car cela fait quelques heures que je me prends la tête sur un problème qui parrait pourtant très simple.
Je travaille sous Toad et j'aimerais créer une procédure me permettant de créer une table si elle n'exite pas dans la base de donnée, et d'effacer les enregistrements dans le cas contraire.
Voici mon code:
BEGIN
-- Si la table n'existe pas, il va soulever une erreur
EXECUTE IMMEDIATE 'DROP TABLE TEMP_IMGSTK';
EXECUTE IMMEDIATE 'CREATE TABLE TEMP_IMGSTK AS SELECT * FROM V_IMG';
RETURN 0;
EXCEPTION
WHEN OTHERS THEN
EXECUTE IMMEDIATE 'CREATE TABLE TEMP_IMGSTK AS SELECT * FROM V_IMG';
RETURN 1;
END;
Quand je lance mon package:
SELECT EXTPCK_MAJSTK.table_imgstk FROM DUAL;
Je reçois ce message d'erreur :
ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
Cause: DDL operations like creation tables, views etc. and transaction control statements such as commit/rollback cannot be performed inside a query or a DML statement.
Action: Ensure that the offending operation is not performed or use autonomous transactions to perform the operation within the query/DML operation.
Je n'arrive pas très bien à comprendre ce que cela peut bien vouloir dire, ni comment je peux régler mon problème.
Pouvez vous m'aider svp
Merci d'avance
Partager