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 :

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;
Une de ces requêtes est "rename matable to manouvelletable" (stocké dans REQSQL voir code ci-dessus)
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