ADELIA |
VADELIA |
SADELIA |
WADELIA |
EADELIA |
(I/B) |
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(B) (S) |
Attention : dans le cas des programmes de type ADELIA, cet ordre est uniquement compatible avec le générateur RPG.
Paragraphe d'utilisation
Tous
Syntaxe
LIRE_SQL SuiteEntités SélectionColonnes ConditionAdélia Paramètre
SuiteEntités |
→ |
SuiteEntités, Entité | Entité |
Entité |
→ |
NomEntité NomCorrélation | NomEntité |
SélectionColonnes | → |
*COL(SuiteZonesEntité) | Rien | *COL(SuiteFcts) |
SuiteZonesEntité |
→ |
SuiteZonesEntité, IdVarEntité | IdVarEntité |
SuiteFcts |
→ |
SuiteFcts, FctCol :IdVarHote | FctCol :IdVarHote |
FctCol |
→ |
NomFct(IdVarEntité) | NOMBRE(*) |
NomFct |
→ |
SOMME | MOYENNE | MAX | MIN | NOMBRE_DISTINCT |
IdVarHote |
→ |
IdVar | IdVar :IdVarIndicatrice |
Paramètre |
→ |
*NON_RG | *RG | Rien |
Description
Cet ordre lit la ou les entités SuiteEntités en respectant la condition ConditionAdélia (facultative), et met les valeurs des champs de l'entité dans les variables fichier.
Il correspond à l'ordre SQL : "Select into SuiteVariablesEntité from SuiteEntités where ConditionAdélia ".
NomCorrélation est utilisé pour empêcher des ambiguïtés entre des champs portant le même nom, mais appartenant à des entités différentes.
Si un nom de corrélation est utilisé, c'est seulement lui qui sera utilisé dans la ConditionAdélia.
Un nom de corrélation est représenté par une seule lettre alphabétique. Il est souvent utilisé pour raccourcir le nom des entités.
Par défaut l'ordre renvoie les valeurs de l'ensemble des colonnes des entités.
Il est cependant possible de ne récupérer que les valeurs des colonnes indiquées dans SélectionColonnes.
Il est également possible de récupérer dans IdVarHote les éléments suivants :
- le nombre de lignes correspondant à la condition (fonction NOMBRE),
- le nombre de lignes distinct pour la colonne IdVarEntité correspondant à la condition (Fonction NOMBRE_DISTINCT),
- la somme (fonction SOMME) ou la moyenne (fonction MOYENNE) des valeurs de la colonne IdVarEntité (de type numérique) pour les lignes correspondant à la condition,
- la valeur maximum (fonction MAX) ou la valeur minimum (fonction MIN) pour la colonne IdVarEntité, parmi les lignes correspondant à la condition.
Attention : sur AS/400, si la condition aboutit à la sélection de plusieurs enregistrements (ou lignes), la lecture échoue et les zones des entités peuvent être modifiées.
Sur les bases SQL micro (DB2, Oracle, SQL Server, ODBC), si la condition aboutit à la sélection de plusieurs enregistrements (ou lignes), la lecture aboutit (*SQLCODE = *NORMAL) mais seul le premier enregistrement lu est renvoyé.
Le paramètre *RG permet de générer les règles de gestion implicites de lecture liées à l'entité, même si le programme est généré sans l'option de génération des règles de gestion implicites.
Le paramètre *NON_RG permet de ne pas générer les règles de gestion implicites de lecture liées à l'entité, même si le programme est généré avec l'option de génération des règles de gestion implicites.
Après exécution de l'ordre, il est possible de tester le code retour SQL à l'aide du mot réservé *SQLCODE.
Par exemple
LIRE_SQL CLIENT, COMMANDE A *COND(A.NUM_CDE=1028 et CCODE_CLIENT=A.CCODE_CLIENT)
* Lecture du nom de l'assuré correspondant à un numéro d'assuré
LIRE_SQL ASSURE *COL(ANOMASS) *COND(ANUMASS = :ZANUMASS)
* Récupération dans la variable NB_ASSURES du nombre d'assurés habitant Paris
LIRE_SQL ASSURE *COL(NOMBRE(*) :NB_ASSURES) *COND(AS_VILLE = 'PARIS')
* Récupération de la valeur maximum du CA client
LIRE_SQL CLIENT *COL(MAX(CMHT_CAF_CLI) :ZZ_CAF_MAXI)