PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Connecteur Natif Oracle : Exécuter plusieurs fois une même requête
Accès NatifsDisponible uniquement avec ce type de connexion
Présentation
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 :
  1. 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).
  2. 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.
Comment le faire ?

Les étapes

Pour préparer et exécuter une requête plusieurs fois, il faut :
  1. Déclarer une source de données. Cette source de données contiendra le résultat de la requête SQL.
  2. 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)
  3. Préparer la requête avec la fonction HPrépareRequêteSQL.
  4. 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.
Exemple
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 // Force le type à entier

// autre solution :
// B est un entier
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 A 10
sdInsert.nom = "Nom " + I
sdInsert.prenom = "Prénom " + I
sdInsert.age_personne = I
HExécuteRequêteSQL(sdInsert)
FIN
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire