Home / Blog / Describe per DB2 UDB iSeries

Describe per DB2 UDB iSeries


DB2

Per quanti di voi come me provengono dal mondo di MySQL e si avvicinano ad altri RDBMS, potrebbe essere comodo l'utilizzo del comando "DESCRIBE".

Peccato che DB2 per iSeries, nonostante disponga del suddetto comando, ha bisogno di un utente con particolare premessi di accesso e configurazione particolare, senza contare il fatto che se volessi eseguire questo comando dall'interno di una procedura PHP bisogna fare i salti mortali.

Soluzione:

Ecco due banalissime query che assolvono egregiamente al compito della "describe"

versione breve:

SELECT
     COLUMN_NAME, DATA_TYPE, LENGTH, IS_NULLABLE, COLUMN_HEADING
 FROM qsys2.SYSCOLUMNS


    WHERE table_schema = 'VOSTRO_SCHEMA' and 
            table_name = 'VOSTRA_TABELLA'

versione estesa:

SELECT DISTINCT C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME,
               C.ORDINAL_POSITION,
                C.DATA_TYPE, C.COLUMN_DEFAULT, C.NULLS ,C.LENGTH, 
               C.SCALE, LEFT(C.IDENTITY,1),
                LEFT(tc.TYPE, 1) AS tabconsttype, k.COLSEQ
                FROM QSYS2.SYSCOLUMNS C
                LEFT JOIN (QSYS2.syskeycst k JOIN QSYS2.SYSCST tc
                    ON (k.TABLE_SCHEMA = tc.TABLE_SCHEMA
                      AND k.TABLE_NAME = tc.TABLE_NAME
                      AND LEFT(tc.type,1) = 'P'))                  
                    ON (C.TABLE_SCHEMA = k.TABLE_SCHEMA
                       AND C.TABLE_NAME = k.TABLE_NAME
                       AND C.COLUMN_NAME = k.COLUMN_NAME)

                WHERE UPPER(C.TABLE_NAME) = 'vostra_tabella'
                AND UPPER(C.TABLE_SCHEMA) = 'vostro_schema'

             ORDER BY C.ORDINAL_POSITION FOR FETCH ONLY

Commenti

Log in o crea un account utente per inviare un commento.

Ciao a tutti, ho deciso di aprire questo blog dopo aver fatto delle prove con Nokia Lifeblog e le tecnologie correlate.
Spero di tenere traccia dei miei appunti ed idee riguardo la mia vita digitale e tutto ciò che mi colpisce particolarmente nella vita (non solo lavorativa) postando da casa, dal lavoro, dal cellulare ... vedremo!

A presto !

Lun Mar Mer Gio Ven Sab Dom
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31