02a - SQL

Esplorare le aree dati con SQL

Last Updated on 22 Marzo 2020 by Roberto De Pedrini

I suggerimenti di MarkOne – n. 6

Nel numeroso elenco di funzioni e viste della famiglia DB2 for i Service, ne esistono alcune che consentono di gestire gli oggetti aree dati (*DTAARA) tramite istruzioni SQL.

Elencare le aree dati

Per ottenere un elenco delle aree dati presenti in un libreria si può usare la funzione di tabella OBJECT_STATISTICS:

select OBJNAME "Nome", OBJTEXT "Descrizione", OBJOWNER "Proprietario", timestamp(OBJCREATED, 0) "Data/ora creazione", timestamp(CHANGE_TIMESTAMP, 0) "Data/ora ult.mod.", timestamp(LAST_USED_TIMESTAMP, 0) "Data/ora ult.utilizzo", DAYS_USED_COUNT "GG util."
   from table(QSYS2/OBJECT_STATISTICS('QUSRSYS', '*DTAARA'))
   order by OBJNAME;

Esplorare il contenuto delle aree dati

La vista DATA_AREA_INFO e la funzione di tabella DATA_AREA_INFO ci consentono di reperire il contenuto di un’area dati. Ovvero un metodo equivalente al comando CL RTVDTAARA e alla API QWCRDTAA.

Reperire il contenuto di una singola area dati:

select rtrim(DATA_AREA_VALUE) "Valore", DATA_AREA_TYPE "Tipo", LENGTH "Lungh.", DECIMAL_POSITIONS "Dec."
   from table(QSYS2/DATA_AREA_INFO(DATA_AREA_LIBRARY => '*LIBL', DATA_AREA_NAME => 'QSS1MRI'));

Reperire il contenuto di un elenco di aree dati:

select DATA_AREA_NAME "Nome", rtrim(DATA_AREA_VALUE) "Valore", DATA_AREA_TYPE "Tipo", LENGTH "Lungh.", DECIMAL_POSITIONS "Dec.", TEXT_DESCRIPTION "Descrizione"
   from DATA_AREA_INFO
   where DATA_AREA_LIBRARY = 'QUSRSYS' and DATA_AREA_NAME in('QINZPCSDA', 'QIZAVRM', 'QRCLSTG', 'QSMTPQ', 'QSS1MRI', 'QTMSCCHG')
   order by DATA_AREA_NAME;

La funzione di tabella DATA_AREA_INFO consente anche di reperire il valore della local data area (*LDA). Per esempio proviamo a modificare il contenuto della *LDA con:

call qcmdexc('CHGDTAARA DTAARA(*LDA (10 5)) VALUE(''12345'')');

E poi visualizziamo il contenuto con:

select rtrim(DATA_AREA_VALUE) "Valore"
   from table(QSYS2/DATA_AREA_INFO(DATA_AREA_NAME => '*LDA'));

Quando sono stati eseguiti gli ultimi salvataggi importanti?

Esistono alcune aree dati che ci danno informazioni sulla data/ora dell’ultima esecuzione di salvataggi importanti eseguiti su IBM i (SAVSYS, SAVCFG…). Tramite DB2 for i service è facile consultare lo stato con una semplice istruzione SQL:

select OBJNAME "Nome", OBJTEXT "Descrizione", timestamp(SAVE_TIMESTAMP, 0) "Data/ora salvataggio"
   from table(QSYS2/OBJECT_STATISTICS('QSYS', '*DTAARA'))
   where OBJNAME like 'QSAV%'
   order by OBJNAME;
Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

About author

mentore IBM i IBM Champion 2021 for Power Systems

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *