SQL dynamique, marquer l’emplacement d’une variable par un « ? »

Le caractère « ? » dans les requêtes SQL dynamiques

Dans l’exemple suivant, cela nous permet de rendre dynamique une requête de supression :

 Lors du stockage de la requête de supression, un « ? » est utilisé pour désigner l’emplacement de la variable qui servira à  la condition de supression.

 Préparation du curseur

 Stockage dans la variable SValeur, de la valeur de filtrage pour la colonne C1, pour supression des enregistrement de la table T1. Par exemple on stocke ‘1’ dans SValeur, si l’on souhaite supprimer les enregistrements de la table T1 dont la colonne C1 contient la valeure ‘1’. On peut évidemment récupérer cette valeur via une saisie utilisateur.

 Execution de la requête via instructions Execute et Using qui permet d’indiquer le nom de la variable hôte à  utiliser pour alimenter le paramètre de la clause where.

 Vous pouvez utiliser plusieurs caractères ‘?’ dans votre clause. Il vous suffit de passer autant de variables hôtes dans votre instruction using et ceci dans le même ordre que vous caractères ‘?’.


D SValeur S 1A
D SRequete S 256A
C Eval SRequete = 'Delete From T1 +
C Where C1 = ?'
C/Exec SQL
C+ Prepare DCurseur
C+ From :SRequete
C/End-Exec
C If ( SQLCod = 0 ) And ( SQLWn0 = *BLANK )
C Eval SValeur = '1'
C/Exec SQL
C+ Execute DCurseur
C+ Using :SValeur
C/End-Exec
C If ( SQLCod <> 0 ) Or ( SQLWn0 <> *BLANK )
C ExSr SQLError
C EndIf
C Else
C ExSr SQLError
C EndIf

Print Friendly, PDF & Email