IBMi – SQL Lire une DTAARA

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)

À 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)


Publié

dans

,

par

Étiquettes :