Bonjour,
J'ai un problème avec la fonction execute immediate.
Sans vouloir trop entrer dans les détails, j'ai créé une procédure qui stock dans une table(tmp_part) un ensemble de requête SQL à exécuter.
J'ouvre un curseur sur la table ou sont sauvegardées toutes les requêtes, puis je les exécutes une par une :
Une de ces requêtes est "rename matable to manouvelletable" (stocké dans REQSQL voir code ci-dessus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 REQ := 'SELECT REQSQL FROM TMP_PART'; OPEN CCRS FOR REQ; -- EXECUTE LA REQUETE LOOP FETCH CCRS INTO REQSQL; -- BASCULE LES DONNÉES DE LA REQUETE DANS LES VALEURS DÉCLARÉS EXIT WHEN CCRS%NOTFOUND; EXECUTE IMMEDIATE REQSQL; COMMIT; END LOOP;
Il n'y a aucun crash sur le Execute immediate de REQSQL contenant le rename, mais en fait la table n'est absolument pas renommé. Du coup les requêtes suivante crash.
N'est-il pas possible de faire un rename via execute immediate ? Si non, ai-je une alternative a cette fonction ?
Merci
Edit : hop hop hop vite vite avant de me faire gronder !! Ma version d'oracle : Oracle 9.2.0.1
Partager