Describe per DB2 UDB iSeries
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.