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 particolari premessi di accesso e configurazione, senza contare il fatto che se volessi eseguire questo comando dall'interno di una procedura PHP risulta molto difficile intercettare l'oggetto restituito dal comando SQL Describe.
Ecco due banalissime query che assolvono egregiamente al compito
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
Log in o crea un account utente per inviare un commento.