Le principe de chargement du sous-fichier est le même que précédemment. Seule la requête possède une structure Adélia différente.
Un ensemble d'instructions SQL est également pris en charge automatiquement, comme la déclaration d'un curseur et sa lecture pour le chargement du sous-fichier.
L'instruction Adélia est unique :
SQL_SFL_D Requête n SuiteIdVar AVEC SuiteIdVarSubstitution
Où :
Requête |
représente le nom de la variable contenant la requête à exécuter ; |
n |
représente le numéro du sous-fichier à remplir ; |
SuiteIdVar |
représente les noms des variables écran à changer, séparées par un espace ; |
SuiteIdVarSubstitution |
représente les noms des variables de substitution éventuelles, séparées par un espace. |
La requête SQL doit être composée au préalable et stockée dans une variable.
Le système Adélia prend ensuite en charge la déclaration d'un fichier de travail (curseur SQL) dans lequel est stocké le résultat de la requête.
Ce fichier est ensuite relu automatiquement lors du chargement de ce sous-fichier.
Par exemple
|
: Remise à blanc de la zone de travail servant |
REQUETE = *BLANK |
: à composer la requête SQL. |
SI ZREQ1 <> *BLANK |
: |
REQUETE = 'SELECT PCOMAT, PLINOM ...FROM HP£PERP WHERE ' // ZREQ1 |
|
|
: La requête à exécuter est chargée |
|
: dans la zone de travail, la zone ZREQ1 |
|
: contient les conditions de sélection |
|
: spécifiées par l'utilisateur. |
SQL_SFL_D REQUETE 1 ZCOMAT ZLINOM ... |
|
|
: Désignation du sous-fichier *1 et |
|
: chargement des zones ZCOMAT ZLINOM |
|
: en fonction de la requête préalablement |
|
: composée dans la zone la REQUETE. |
* |
: |
EFFACER 1 |
: Boucle de chargement du sous-fichier |
GESTION_SFL 1 |
: Le système Adélia prend en charge |
MAJ_SFL |
: automatiquement la lecture du fichier de travail (curseur) |
FIN_GESTION_SFL |
: résultant de l'exécution SQL. |
* |
|
Une variante possible, par la syntaxe même de SQL, consiste à définir la requête de manière à remplacer une valeur de comparaison au moment même de l'exécution. Cette variable à substituer dans la requête SQL est toujours qualifiée par le caractère "?".
Par exemple
Requête sans variable de substitution :
Requete = 'select PCOMAT, PLINOM... where PCOTPA = ''' // ZCOTPA // ''''
SQL_SFL_D Requete 1 ZCOMAT ZLINOM ...
Requête avec variable de substitution. Les ordres Adélia dans le modèle deviennent alors :
Requete = 'select PCOMAT, PLINOM... where PCOTPA = ? '
SQL_SFL_D Requete 1 ZCOMAT ZLINOM ... AVEC ZCOTPA
où
ZCOTPA = Variable de substitution