mardi 31 août 2010

Scripts SQL contenant un caractère & (amper and)

Afin de disposer de variables dans les scripts SQL, SQL*PLUS(Client en ligne de commande permettant de se connecter à une base de donnée Oracle) permet de définir des variables préfixées du caractère '&'. Lorsque l'utilisateur exécute la requete, sql*plus lui demande la valeur à utiliser afin de remplacer cette variable. Ceci permet d'avoir une partie dynamique dans une requête et ainsi d'éviter de devoir retaper plusieurs fois des requetes qui diffèrent d'un filtre ou d'un paramètre.

Mais où est le problème alors ? Le problème va venir le jour où un script contiendra un & dans une chaîne de caractères. Votre SQL*Plus va vous demander par quelle valeur faut-il remplacer la variable et le fait de ne rien mettre va juste vous effacer ce qu'il y a après le caractère &. Ce problème apparait également avec TOAD pour Oracle.

La commande "SET DEFINE OFF;" permet de désactiver ces demandes de remplacements de variables lors de l'exécution de script. Cette commande marche aussi bien avec TOAD et SQL*Plus. Il est à noter qu'avec TOAD, il est également possible de faire un clic droit dans l'éditeur et déselectionner l'option proposant de demander les valeurs des variables (marche uniquement pour l'exécution d'une requete)

Voila, un petit post utile en cas de soucis avec le caractère & !



Références