02a - SQL

Esplorare le aree dati con SQL

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;
About author

mentore IBM i

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo: