Bonjour,

Dans une procédure stockée, je crée un table temporaire avec execute immediate. Ca fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	select trunc(dbms_random.value(1,10000000)) num into tblRef from dual;
 
	request := 'CREATE GLOBAL TEMPORARY TABLE NC_TEMP_DIAG_CODE_' || tblRef ||' (';
	request := request || 'ncDiagCode VARCHAR2(20), ';
	request := request || 'ncMotif VARCHAR2(60), ';
	request := request || 'ncSousMotif VARCHAR2(60), ';
	request := request || 'ncActionType VARCHAR2(30), ';
	request := request || 'swDateCreated VARCHAR2(10), ';
	request := request || 'ncDiagCodeId NUMBER(15,5) ';
	request := request || ') ON COMMIT PRESERVE ROWS';
 
             execute immediate request;
Ensuite j'effectue des insert et des select, ca fonctionne toujours.

Enfin, je la supprime:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
	request := 'DROP TABLE NC_TEMP_DIAG_CODE_' || tblRef ;
	execute immediate request;
Et là, ca ne fonctionne pas. La procédure stockée se plante.

J'ai même essayé de rajouter CASCADE CONSTRAINTS, ca ne marche toujours pas.

Je ne vois pas d'où viens le problème...je sèche...

Par avance merci de votre aide !

Greg