DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Déclaration des variables
  • Syntaxe de déclaration : Remarques
  • Code SQL de la requête
  • Utilisation de [% %] dans les requêtes SQL
  • Contexte HFSQL
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Le type "Requête SQL" permet d'écrire une requête SQL directement dans le code WLangage. La requête SQL est définie et déclarée. Elle peut ensuite être exécutée par la fonction HExécuteRequête ou la fonction HExécuteRequêteSQL.
L'utilisation du type "Requête SQL" permet de profiter de nombreux avantages :
  • Coloration automatique du code SQL sous l'éditeur,
  • Assistance à la saisie de code SQL,
  • Assistance à la saisie sur les rubriques résultat et les paramètres de la requête,
  • Erreurs de compilation :
    • en cas d'erreur dans le code SQL
    • en cas d'utilisation d'une rubrique de sortie inexistante.
  • Data binding sur la requête si elle est déclarée comme globale à une fenêtre,
  • Libération automatique en fin de portée de la variable.
Exemple
reqStatVols est une Requête SQL =
[
SELECT * FROM  Vols
WHERE Vols.IDAéroportDépart = {ParamIDAéroportDépart}
AND Vols.IDAéroportArrivée = {ParamIDAéroportArrivée}
]
reqStatVols.ParamIDAéroportDépart = 12
reqStatVols.ParamIDAéroportArrivée = 3
 
HExécuteRequête(reqStatVols)
POUR TOUT reqStatVols
...
FIN
Syntaxe

Déclarer une requête SQL Masquer les détails

<Nom Requête SQL> est une Requête SQL =
[    
   <Code SQL de la requête>
]
<Nom Requête SQL> :
Nom de la variable correspondant à la requête SQL.
<Code SQL de la requête> :
Code SQL correspondant à la requête SQL associé à la variable.
Remarques

Syntaxe de déclaration : Remarques

  • La requête doit être définie dès sa déclaration. Il n'est pas possible de déclarer une variable de type Requête SQL puis de saisir le code SQL correspondant après quelques lignes de code.
  • Lors de la déclaration de la variable de type Requête SQL, il est possible de lancer l'assistant de l'éditeur de requête pour écrire le code SQL de la requête. Il suffit de choisir l'option "Requête SQL (assistant)".
    L'assistant de l'éditeur de requêtes s'ouvre et vous permet de saisir les options de votre requête. Lors de la validation de l'assistant, le code SQL de la requête est intégré dans le code WLangage.
  • Les fichiers de données utilisés dans le FROM de la requête doivent être déclarés dans l'analyse du projet. Ils ne peuvent pas provenir de sources de données initialisées par un alias, une déclaration externe ou une autre requête.
  • La requête SQL ne peut pas être construite avec des concaténations de chaînes. Pour construire une requête par concaténations de chaînes, il faut utiliser la fonction HExécuteRequêteSQL.
  • La requête SQL n'est pas exécutée lors de sa déclaration. Il est nécessaire de l'exécuter à l'aide de la fonction HExécuteRequête ou de la fonction HExécuteRequêteSQL.
  • Lorsque la requête est déclarée et exécutée, elle peut être manipulée par toutes les fonctions HFSQL qui manipulent des requêtes.
  • Lorsque la requête SQL est déclarée et exécutée, elle peut être utilisée dans une autre requête SQL en utilisant le nom de la variable correspondante :
    MonInterrogation est une Requête SQL =
    [
    SELECT * FROM CLIENT
    ]
    HExécuteRequête(MonInterrogation)
     
    AutreInterrogation est une chaîne = "SELECT * FROM %1"
    AutreInterrogation = ChaîneConstruit(AutreInterrogation, MonInterrogation.Nom)
     
    ReqAvecMonInterrogation est une Source de Données
    HExécuteRequêteSQL(ReqAvecMonInterrogation, AutreInterrogation)

Code SQL de la requête

  • Le code SQL saisi bénéficie de la coloration syntaxique. Les mots-clés du SQL sont colorés (voir exemple).
  • Complétion : La complétion est disponible :
    • sur les mots-clés SQL,
    • sur les rubriques et les fichiers de données,
    • sur les rubriques de sortie de la requête.
      La saisie SQL assistée
      La saisie SQL assistée
  • Erreurs de compilation : En cas d'erreur dans le code SQL de la requête, une erreur de compilation est générée (comme pour du code WLangage).
    Erreur de code SQL détectée en saisie
    Erreur de code SQL détectée en saisie
  • De la même manière que dans une requête SQL saisie sous l'éditeur de requêtes, il est possible de :
    • saisir des commentaires en les faisant précéder des caractères "--" ou "//".
    • saisir des fonctions WLangage. Il suffit de préfixer les fonctions WLangage utilisées par les lettres "WL.". La saisie assistée est disponible.
      AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes SQL contenant des fonctions WLangage.
    • ...

Utilisation de [% %] dans les requêtes SQL

Les requêtes SQL acceptent la nouvelle syntaxe :
[% nom_de_variable %]

A l'exécution, le nom de variable compris entre les "%" sera remplacé par la valeur de cette variable.
Exemple :
IDClientAChercher est un entier = xxx
// Recherche de toutes les commandes du client
ToutesCommandes est une Requête SQL = [
SELECT * FROM Commande WHERE IDClient = [%IDClientAChercher%]
]
HExécuteRequêteSQL(ToutesCommandes)
POUR CHAQUE ToutesCommandes
// une commande du client
FIN
Remarques :
  • L'évaluation des paramètres est effectuée une seule fois, à la déclaration de la requête.
  • Toutes les exécutions de la requête (appels à la fonction HExécuteRequêteSQL) utiliseront donc la valeur de la variable au moment de la déclaration de la requête, même si la valeur de la variable change entre deux appels à la fonction HExécuteRequêteSQL.
  • Pour paramétrer la requête à chaque appel :
    • il est possible d'utiliser un paramètre de requête HFSQL "{<paramètre>}".
    • Il est également possible d'utiliser une autre requête SQL ou une source de données "alias" contenant l'alias d'un fichier et décrite par un attribut <description="fichier">. Exemple :
      SélectionClient est une Source de Données <description="Client">
      // Recherche de tous les clients de la sélection vérifiant la condition
      FiltreClient est une Requête SQL = [
      SELECT * FROM [%SélectionClient%] WHERE ...
      ]
      HExécuteRequêteSQL(FiltreClient)
      POUR CHAQUE FiltreClient
      // Clients de la sélection qui sont filtrés par la requête
      FIN

Contexte HFSQL

  • Une requête SQL est définie dans le contexte HFSQL courant. Dans une fenêtre à contexte HFSQL indépendant, une requête SQL peut ne pas exister.
  • Une requête SQL peut être définie comme une variable globale. Dans ce cas, il est nécessaire de faire attention aux contextes HFSQL.
Version minimum requise
  • Version 23
Documentation également disponible pour…
Commentaires
Erreur de syntaxe
DAns le paragraphe
Utilisation de [% %] dans les requêtes SQL
Les requêtes SQL acceptent la nouvelle syntaxe : [% NomDeVariable%]
Il faut lire bien entendu sans les deux blancs de part et d'autres du nom de la variable :
[%NomDeVariable%]
bernard SOBRA
01 mar. 2024
erreur WDJAVA avec Sqlite sous Android
Ne fonctionne pas avec Sqlite sous Android: erreur framework WDJAVA
Ne fonctionne pas en INSERT avec des valeurs de paramètres comportant un espace
Stephane
03 juil. 2019
Inconvénient
Lorsqu'on modifie le code de la requête, on doit mettre à jour tout le site (bibilothèque WDL)
HAYTHEM
28 juin 2019

Dernière modification : 13/04/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale