|
|
|
|
|
- Présentation
- Comment le faire ?
- Les étapes
- Remarques
- Exemple
- 1. Déclaration de la source de données
- 2. Déclaration des variables
- 3. Préparation de la requête
- 4. Valeurs des paramètres et ré-exécution de la requête
Connecteur Natif Oracle : Exécuter plusieurs fois une même requête
Disponible uniquement avec ce type de connexion
Dans certains cas, il peut être intéressant d'exécuter plusieurs fois une même requête en modifiant uniquement un ou plusieurs paramètres. Un cas courant consiste à exécuter plusieurs fois une requête d'insertion pour ajouter plusieurs enregistrements dans un fichier. Plusieurs solutions peuvent être mises en place : - Exécuter directement la requête (avec la fonction HExécuteRequêteSQL) autant de fois que nécessaire en modifiant à chaque fois le ou les paramètre(s) voulu(s).
- Préparer la requête à exécuter (fonction HPrépareRequêteSQL) ainsi que les différents paramètres à modifier puis exécuter la requête autant de fois que nécessaire avec la fonction HExécuteRequêteSQL. Cette seconde solution est beaucoup plus rapide et optimise le temps de parcours du résultat de la requête (cas d'une requête de type SELECT).
Cette page d'aide présente la mise en place de cette seconde solution. Les étapes Pour préparer et exécuter une requête plusieurs fois, il faut : - Déclarer une source de données. Cette source de données contiendra le résultat de la requête SQL.
- Déclarer les types des différentes variables de la requête.
Les variables sont récupérées dans le type spécifié en WLangage. Par défaut les variables sont de type texte. Des conversions peuvent donc se produire du type natif de la base vers le type WLangage qui peuvent entraîner arrondis ou des formatages inattendus (par exemple une Date transformée en chaîne). Il est donc conseillé de spécifier de façon adéquate les types WLangage des variables avant d'exécuter la requête. Ceci est peut être fait :- soit en initialisant la valeur de la variable (types simples : entier, chaîne, flottant)
- soit en spécifiant le type attendu grâce à la propriété Type (non supporté dans cette version)
- Préparer la requête avec la fonction HPrépareRequêteSQL.
- Indiquer la valeur du ou des différents paramètres à prendre en compte et exécuter la requête à l'aide de la fonction HExécuteRequêteSQL. Seul le nom de la source de données correspondant à la requête doit être spécifié.
Cette dernière étape doit être répétée autant de fois que nécessaire. Remarques - La fonction HPrépareRequêteSQL doit être utilisée avec :
- le nom de la connexion,
- la constante hRequêteSansCorrection.
- Les variables déclarées doivent être identiques à celles utilisées. Dans le cas contraire, une erreur WLangage est affichée.
- Dans l'appel à la procédure stockée, il est nécessaire d'utiliser la syntaxe spécifique à la base de données utilisée, y compris pour la syntaxe des paramètres. Ainsi, pour Oracle, les paramètres sont spécifiés avec la syntaxe :NomParam.
Attention : le caractère ":" doit être suivi d'au moins une lettre (la syntaxe :1 est interdite). Il est possible d'utiliser plusieurs fois le même paramètre. Dans ce cas, la variable correspondante sera ré-utilisée. - Pour exécuter une requête sans que le bind ne soit activé, il est nécessaire d'utiliser la constante hSansBind dans la fonction HExécuteRequêteSQL.
On veut exécuter plusieurs fois une requête d'insertion dans la table PERSONNE. 3 paramètres sont modifiés à chaque ajout : - le nom.
- le prénom.
- l'âge.
1. Déclaration de la source de données La source de données permet de manipuler les différentes variables qui seront modifiées à chaque exécution de la requête : sdInsert est une Source de Données
2. Déclaration des variables Dans cet exemple, trois variables vont être modifiées. Les trois variables pourraient être déclarées. Cependant, seule la variable age_personne va être déclarée. Pour préciser le type d'une variable de la requête, affectez cette variable avec une variable existante du type voulu. sdInsert.age_personne = 0
sdInsert.age_personne = B
3. Préparation de la requête La requête va être préparée à être exécutée plusieurs fois grâce à la fonction HPrépareRequêteSQL. HPrépareRequêteSQL(sdInsert, connexion, hRequêteSansCorrection, ...
"INSERT INTO PERSONNE VALUES (:nom, :prenom, :age_personne)")
4. Valeurs des paramètres et ré-exécution de la requête Il ne reste plus qu'à spécifier la valeur des paramètres pour chaque exécution de la requête. I est un entier
POUR I = 1 À 10
sdInsert.nom = "Nom " + I
sdInsert.prenom = "Prénom " + I
sdInsert.age_personne = I
HExécuteRequêteSQL(sdInsert)
FIN
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|