Lister les champs d'une table avec QSYS2.SYSCOLUMNS et QSYS.SYSCOLUMNS2
Objectifs :
Récupérer la description des champs d’une table ou d’un fichier avec SQL comme avec la commande DSPFFD.
Ceci est possible grâce aux tables :
- QSYS2.SYSCOLUMNS
- QSYS2.SYSCOLUMNS2
Les requêtes SQL portant sur QSYS2.SYSCOLUMNS et QSYS2.SYSCOLUMNS2 pouvant être encapsulées dans un programme, il est possible de récupérer les informations directement sans avoir à générer un fichier temporaire comme il est nécessaire de le faire avec : DSPFFD OUTPUT(*OUTFILE).
Lorsque la requête ne cible qu’une seule table, IBM préconnise d’utiliser QSYS2.SYSCOLUMNS2 pour optimiser les temps de traitement.
QSYS2.SYSCOLUMNS2 contient les mêmes informations de QSYS2.SYSCOLUMNS, complétées d’autres informations telles que :
- Le type de données au format DDS
- Le format Date des champs de type Date
- Le type de séparateur pour les champs de type Date
- Le format Time des champs de type Time
- Le type de séparateur pour les champs de type Time
- Les informations de références (Bibliothèque/fichier/format/champs) si le champ de la table est basé sur un champ référence
- L’EDIT CODE du champ
- L’EDIT WORD du champ
- La type d’usage du champ
- La longueur du champ en nombre d’octet dans l’enregistrement
- La position de départ du champ dans l’enristrement
- …
QSYS2.SYSCOLUMNS2
QSYS2.SYSPCOLUMNS2 permet de lister les différents champs d’une table ou fichier.
Et ce avec toutes les informations de définition de chacun des champs.
Exemple de requête sur QSYS2.SYSCOLUMNS2 avec les informations principales de définition des champs :
SELECT
SYSTEM_TABLE_SCHEMA AS NOM_BIBLIOTHEQUE,
SYSTEM_TABLE_NAME AS NOM_TABLE,
ORDINAL_POSITION AS NUMERO_ORDRE,
COLUMN_NAME AS NOM_LONG_CHAMP,
SYSTEM_COLUMN_NAME AS NOM_CHAMP,
DATA_TYPE AS CHAMP_TYPE,
LENGTH AS LONGUEUR_CHAMP,
NUMERIC_SCALE AS NOMBRE_DECIMALES,
COLUMN_TEXT AS TEXTE_DESCRIPTION,
COLUMN_HEADING AS TEXTE_ENTETE_DE_COLONNE,
CCSID AS CCSID_DU_CHAMP,
IS_NULLABLE AS NULL_ACCEPTE_Y_N,
HAS_DEFAULT AS VALEUR_PAR_DEFAUT_DEFINIE,
COLUMN_DEFAULT AS VALEUR_PAR_DEFAUT,
IS_IDENTITY AS COLONNE_IDENTITE_Y_N,
IDENTITY_ORDER AS ORDRE_COLONNE_IDENTITE
FROM QSYS2.SYSCOLUMNS2 A
WHERE SYSTEM_TABLE_SCHEMA = ‘ma_bibliotheque‘
AND SYSTEM_TABLE_NAME = ‘ma_table‘
ORDER BY ORDINAL_POSITION;
D’autres information sont accessibles, la liste complète est disponible sur le site d’IBM SYSCOLUMNS2.
QSYS2.SYSCOLUMNS
QSYS2.SYSPCOLUMNS permet de lister les différents champs d’une table ou fichier.
Et ce avec toutes les informations de définition de chacun des champs.
Exemple de requête sur QSYS2.SYSCOLUMNS avec les informations principales de définition des champs :
SELECT
SYSTEM_TABLE_SCHEMA AS NOM_BIBLIOTHEQUE,
SYSTEM_TABLE_NAME AS NOM_TABLE,
ORDINAL_POSITION AS NUMERO_ORDRE,
COLUMN_NAME AS NOM_LONG_CHAMP,
SYSTEM_COLUMN_NAME AS NOM_CHAMP,
DATA_TYPE AS CHAMP_TYPE,
LENGTH AS LONGUEUR_CHAMP,
NUMERIC_SCALE AS NOMBRE_DECIMALES,
COLUMN_TEXT AS TEXTE_DESCRIPTION,
COLUMN_HEADING AS TEXTE_ENTETE_DE_COLONNE,
CCSID AS CCSID_DU_CHAMP,
IS_NULLABLE AS NULL_ACCEPTE_Y_N,
HAS_DEFAULT AS VALEUR_PAR_DEFAUT_DEFINIE,
COLUMN_DEFAULT AS VALEUR_PAR_DEFAUT,
IS_IDENTITY AS COLONNE_IDENTITE_Y_N,
IDENTITY_ORDER AS ORDRE_COLONNE_IDENTITE
FROM QSYS2.SYSCOLUMNS A
WHERE SYSTEM_TABLE_SCHEMA = ‘ma_bibliotheque‘
AND SYSTEM_TABLE_NAME = ‘ma_table‘
ORDER BY ORDINAL_POSITION;
D’autres information sont accessibles, la liste complète est disponible sur le site d’IBM SYSCOLUMNS.