|
|
|
|
|
- Syntaxe de déclaration : Remarques
- Code SQL de la requête
- Utilisation de [% %] dans les requêtes SQL
- Contexte HFSQL
Requête SQL (type WLangage) En anglais : SQL query (WLanguage type)
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.
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](https://doc.pcsoft.fr/fr-FR/images/image.awp?langid=5&name=151-sql_completion_rubriques.jpg&1585244766) 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](https://doc.pcsoft.fr/fr-FR/images/image.awp?langid=5&name=152-sql_code_erreur.jpg&397893674) 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.
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 : 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.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|