Si vous avez cette erreur c'est que comme moi vous avez tenté de faire quelque chose comme :
Begin
Execute Immediate 'Truncate Table :1' using 'MaTable';
End;
En y réfléchissant bien, il est normal qu'Oracle refuse de faire cela. En effet, la commande Execute Immediate travaille avec des bind variables (préfixées par un ':'). La valeur d'une bind variable est assignée après que le parseur ait analysé votre requête. Oracle vous indique donc que la table ":1" n'existe pas.
Pour info, si vous travaillez avec sqlplus et que vous pouvez scripter le code que vous souhaitiez exécuter, il est possible d'avoir le comportement que vous souhaitiez en utilisant une variable de script, c'est à dire &1 :
Begin
Execute Immediate 'Truncate Table &1';
End;
/
Si sqlplus n'est pas une solution, vous devez concaténer votre requête dynamique :
Begin
Execute Immediate 'Truncate Table ' || 'MaTable';
End;
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire