|
VADELIA |
SADELIA |
WADELIA |
MADELIA |
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(I) (S) |
Paragraphe d'utilisation
Tous
Syntaxe
EXEC_SQL (RequêteSQL)
EXEC_SQL (:VarRequête)
Description
Cet ordre exécute une requête SQL RequêteSQL (écrite avec la syntaxe de SQL).
L'utilisation des variables hôtes est possible grâce au " : " devant le mot directeur de la variable.
Le paramètre VarRequête est une variable alphanumérique contenant une requête SQL de type non-sélection, exécutable dynamiquement ; voir la documentation SQL correspondante.
Lorsque la requête porte sur une base de données SQL micro, il faut qualifier le nom de la table par son schéma. Si l'on indique les caractères $$. devant le nom de la table à la place du schéma, Adélia enlève la qualification pour les accès aux tables SQL AS/400, et remplace les caractères $$. par le schéma défini au niveau des attributs de l'environnement si la table correspond à une entité logique publique, sinon par le schéma défini dans le niveau logique du domaine.
Attention : dans la requête SQL, il faut indiquer le nom réel des colonnes et des tables et non les noms Adélia (sauf pour les variables hôtes où l'on indique le mot directeur Adélia).
Pour les programmes VADELIA et SADELIA, il est possible de s'assurer que l'enregistrement n'est pas verrouillé en le testant à l'aide du mot réservé *BLOQUE.
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
EXEC_SQL (select CADCLI,CVILCL into :ZADRESSE_CLIENT,:ZVILLE_CLIENT from $$.CLIENTP where CCOCLI = :ZCODE_CLIENT)
EXEC_SQL (select MAX(CNUAVE) into :NumMaxAve from $$.contra where CNUCON = :ZCNUM_CON)
* L'exécution de cette requête SQL a pour but de rechercher le maximum parmi les
* numéros d'avenants d'un contrat ; le résultat est récupéré dans la variable
* NumMaxAve.
Autre exemple d'utilisation
WREQUETE = 'DROP TABLE schema.matable'
EXEC_SQL (:WREQUETE)
Autre exemple d'utilisation
** Définition et parcours d'un curseur pour obtenir la somme d'un chiffre
** d'affaire par ville à partir d'un fichier client
EXEC_SQL (declare curs1 cursor for select cl_ville, sum(cl_chiff_aff) from $$.client group by cl_ville)
EXEC_SQL (open curs1)
*
EXEC_SQL (fetch curs1 into :CBUR_DIS_CLI, :WTOT_BURDIS)
tant_que *sqlcode = *normal
...
EXEC_SQL (fetch curs1 into :CBUR_DIS_CLI, :WTOT_BURDIS)
refaire
*
EXEC_SQL (close curs1)