ADELIA |
|
|
|
|
(I/B) |
|
|
|
|
Attention : dans le cas des programmes de type ADELIA, cet ordre est uniquement compatible avec le générateur RPG.
Paragraphe d'utilisation
DECLARATION
Syntaxe
DECL CURSEUR NomCurseur SuiteEntités Distinct SélectionColonnes ConditionAdélia TriDeZones OptimisationLignes MaxLignes
DECL CURSEUR NomCurseur NomEntité Distinct SélectionColonnes ConditionAdélia TriDeZones OptimisationLignes MaxLignes Maj
SuiteEntités |
→ |
SuiteEntités, Entité | Entité |
Entité |
→ |
NomEntité NomCorrélation | NomEntité |
Distinct |
→ |
*DISTINCT | Rien |
SélectionColonnes |
→ |
*COL(SuiteZonesEntité) | Rien |
Maj |
→ |
*MAJ(SuiteZonesEntité) | *MAJ |
SuiteZonesEntité |
→ |
SuiteZonesEntité, IdVarEntité | IdVarEntité |
OptimisationLignes |
→ |
*OPT(n) | Rien |
MaxLignes |
→ |
*LIGNES(m) | Rien |
Description
Cet ordre définit un curseur NomCurseur sur la ou les entités SuiteEntités, en respectant la condition ConditionAdélia (facultative) et l'ordre sur certaines zones, déterminé par le paramètre *TRI et les zones concernées SuiteZonesTri et, pour chacune d'elles, le sens Sens du tri. Le sens peut être *ASC pour ascendant, *DESC pour descendant. Si Sens n'est pas indiqué, par défaut la valeur est *ASC.
Cliquez ici pour l'explication de l'élément TriDeZones.
Par défaut, le curseur renvoie les valeurs de l'ensemble des colonnes des entités. Il est cependant possible de ne récupérer que les valeurs pour les colonnes indiquées dans SélectionColonnes.
Si *DISTINCT est précisé, le curseur ne renvoie que les lignes distinctes (par rapport à l'ensemble des colonnes ou pour les colonnes sélectionnées dans SelectionColonnes).
Il est possible de demander à l'optimiseur SQL d'optimiser l'exécution de la requête afin de récupérer plus rapidement les n premières lignes du curseur (paramètre *OPT).
En outre, il est possible d'indiquer à l'optimiseur de requête de récupérer uniquement les m premières lignes du curseur (paramètre *LIGNES).
Le paramètre *MAJ permet d'utiliser les ordres MAJ_SQL_C et SUPPRIMER_SQL_C sur ce curseur. Il ne peut être utilisé que si le curseur porte sur une seule entité.
Si le curseur est utilisé par l'ordre MAJ_SQL_C, il faut préciser les zones de l'entité SuiteZonesEntité qui seront mises à jour.
Si le paramètre *MAJ est employé seul, cela signifie que toutes les zones (à l'exception de l'éventuelle zone auto-incrément) seront mises à jour.
Remarque : les versions antérieures à la V6R1 de l'OS/400 n'acceptent pas que les zones de tri soient également des zones à mettre à jour.
Par exemple
* Créer un curseur de lecture des clients et société, avec un tri sur nom du client
CURSEUR CurCliSo CLIENT, SOCIETE *COND(CL_COD_SOC = SO_COD_SOC) *TRI(CL_NOM_CLI)
* Créer un curseur de lecture des commandes (numéro de commande, nom du client et montant), avec un tri sur le montant
DECL CURSEUR Curseur1 COMMANDE *COL(CNUM_COMMANDE, CNOM_CLIENT, CMONTANT) *COND(CMONTANT > 1000) *TRI(CMONTANT)
* Créer un curseur de lecture des commandes, avec une mise à jour possible sur
* CMONTANT
DECL CURSEUR Curseur2 COMMANDE *COND(CMONTANT > 1000) *MAJ(CMONTANT)
* Créer un curseur en mise à jour sur les contrats
DECL CURSEUR CURS_CONTRAT CONTRAT *COND(CCOD_SOC = :ZCODE_STE ET CCOD_PRO = :ZPCOD_PRO) *MAJ