02 - Database DB2 for i02a - SQL

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

Questo è il secondo post (Part.2) delle FAQ su DB2 e SQL … puoi trovare la parte 1 al seguente link:

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

iDB2-FAQ-011 – Come posso creare un CSV da uno statement SQL in modo automatico e non interattivo?

Chi utilizza ACS Access Client Solution e la sua funzione di esecuzione Script SQL sa che può esportare il risultato di una query SQL come file CSV (o TXT o XLS ecc) … ma se volessimo farlo in modo automatico, magari da un programma schedulato?

La cosa è abbastanza semplice perché nello script SQL possiamo utilizzare anche dei comandi di sistema operativo … Prendiamo il seguente esempio … interrogo la funzione NETSTAT da SQL e salvo il contenuto in un file CSV per analisi successive:

create table qtemp.netstat as
 (SELECT *
     FROM qsys2.netstat_info)
     with data;
 cl: CPYTOIMPF FROMFILE(QTEMP/NETSTAT)
     TOSTMF('/home/faq/netstat.csv')
     STMFCCSID(PCASCII) RCDDLM(CRLF) ADDCOLNAM(*SQL);  

Questo script potremmo anche eseguirlo da un CL program, quindi schedularlo o chiamarlo da un altro programma ILE.

       PGM          
         RUNSQLSTM  SRCFILE(FAQ400/SRC) SRCMBR(XNETSTAT) COMMIT(*NONE) OUTPUT(*PRINT)   
       ENDPGM 

iDB2-FAQ-012 – Regular Expression con SQL DB2 for i

L’introduzione delle regolar expressions nelle funzioni SQL del DB2 for i apre un mondo nell’elaborazione delle stringhe … con una sola regular-expression si risparmiano righe e righe di codice …

C’è una ottima guida in Italiano sulle Regular Expression di Marco Riva al seguente link: Regular expressions Cosa sono?

iDB2-FAQ-013 – Regular Expression… casi pratici

Vediamo alcuni casi pratici di Regular Expression in SQL e SQL Embedded:

In questo esempio vediamo un programma RPG che chiama un web service … questo torna un “path-file” con il percorso completo di un file (PDF) generato dallo stesso servizio. Il programma recupera “nome file”, “nome file senza estensione .pdf (numero del documento)” dalla stringa tornata nel formato : “C:\inetpub\pdfOrdini\1925049.pdf”

   //-------------------------
   // Genera_documento
   //-------------------------
   dcl-proc doc_genera  export;
   dcl-pi   doc_genera  char(30)  ;
      DocType           char(3) const;
      InternalNumber    char(10) const;
   end-pi;
   dcl-s url varchar(256);
   dcl-s pathfile char(45);
   dcl-s nomefile char(15);
   dcl-s numerodoc char(15);


   url='http://webserverip/api/doc_generate?'
   + 'InternalNumber='+%trim(InternalNumber);



   exec sql
     SELECT Pathfile
     into   :pathfile  
        from
            JSON_TABLE(SYSTOOLS.HTTPGETCLOB(replace(:url,' ','%20'),''),
            '$.Result'  COLUMNS(
             Pathfile VARCHAR(100)  PATH '$'
             ) ) as x ;


   // Estraggo dalla PATH completa il nome del file
   exec sql
      select regexp_replace(:pathfile, '^.*\\', ' ')
             into :nomefile 
       from SYSIBM.SYSDUMMY1;

   // Estratto il numero documento dal nomefile.pdf
   exec sql
       select regexp_replace(:nomefile, '\.[A-Za-z0-9]+$', ' ')
             into :numerodoc 
           from SYSIBM.SYSDUMMY1;

  if nomefile<>'';
     return numerodoc;
  else;
     return 'KO';
  endif;


   END-PROC;   

iDB2-FAQ-014 – Recuperare il numero settimana da una data numerica YYYYMMDD

Ho diverse tabelle del mio ERP on le date memorizzate in formato numerico nel formato YYYYMMDD, tipo 20191013 per il 13 Ottobre 2019. Come posso estrapolare con SQL il numero di settimana dell’anno?

 select ndoc, nfat, dfat, VarChar_Format(Timestamp(Right(Digits(dfat) concat '000000', 14)), 'IYYY/IW')
   from myERPtable
   where tdoc='FAT'
     order by dfat desc, nfat desc;
--- Roberto De Pedrini Faq400.com
About author

Founder di Faq400 Srl, IBM Champion, ideatore del sito Faq400.com e del Blog blog.faq400.com. Sviluppatore RPG da quando avevo i pantaloni corti, forte sostenitore della piattaforma IBM i (ex AS400), ho sempre cercato di convididere le mie conoscenze con gli altri tramite forum, eventi e corsi. Oggi, tramite Faq400 Srl, cerchiamo di aiutare le aziende a sfruttare al meglio questa fantastica piattaforma IBM i.

Rispondi

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