Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi je ne peux pas utiliser une variable de liaison dans une instruction d'exécution immédiate ?

Les variables de liaison servent à lier des variables, pas à lier des morceaux de code. L'idée est qu'Oracle peut compiler et mettre en cache une requête ou un bloc de code et l'exécuter plusieurs fois avec des paramètres différents.

Cependant, vous essayez d'utiliser la liaison de paramètre pour remplacer la formule calculée. Cela empêcherait la compilation et la mise en cache du bloc de code et n'est donc pas pris en charge.

De plus, il ne peut pas être exprimé avec la syntaxe actuelle. Si Oracle voit tmp := :f il pense que vous voulez simplement assigner le paramètre f à la variable tmp . Il ne s'attend pas à devoir évaluer une fonction.

Allez simplement avec la solution de travail. Cela fonctionne après tout.