IBMi - SQL Lire une DTAARA

Trucs & Astuces - SQL

AddThis Social Bookmark Button

 

Depuis la V 7R2, il est possible de lire des données système directement depuis une instruction SQL.

Il est aussi possible de lire le contenu d'une DTAARA grâce à une fonction SQL. Voici comment ....  ** Update V7R4

 

 Dans un premier temps, il faut créer un PGM pour lire la dtaara :

PGM   PARM(&VERSION)

DCL  &VERSION *CHAR LEN(8)

RTVDTAARA DTAARA(ARVERSION) RTNVAR(&VERSION)

ENDPGM

Compiler le module :

CRTCLMOD MODULE(MYLIB/GETDTA) SRCFILE(MYLIB/QCLLESRC)

Compiler le programme de service 

CRTSRVPGM SRVPGM(MYLIB/GETDTA) MODULE(MYLIB/GETDTA) EXPORT(*ALL)

Puis, définir la fonction SQL dans le membre source GETVERSION dans MYLIB/QSQLSRC

Create Function
GetVersion ()

Returns CHAR(8)
Language CL
Specific GetVersion
Deterministic
No SQL
Returns Null on Null Input
No External Action
Not Fenced
External Name 'MYLIB/ GETDTA(GETDTA)'
Parameter Style SQL;

 

Lancer la compilation de la fonction :

RUNSQLSTM SRCFILE(MYLIB/QSQLSRC) SRCMBR(GETVERSION)

 

A partir de n'importe qu'elle session SQL connectée à votre IBMi lancer la requète :

SELECT  GetVersion() FROM SYSIBM/SYSDUMMY1

 

 Depuis la V7R4, il est possible de lire le contenu d'une DATAARA sans avoir à créer une fonction.

Il suffit de passer la requète SQL suivante :

 

SELECT DATA_AREA_VALUE FROM TABLE(QSYS.2.DATA_AREA8INFO(

                                                                                                 DATA_AREA8NAME => 'ARCVERSION',

                                                                                                 DATA_AREA_LIBRARY => 'MYLIB'))

 

 (Merci Yvain pour l'upgrade)

 

 

  Cet article vous a été utile, n'hésitez pas à le partager.