fr en

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
Comme la commande DSPFFD, ces tables contiennent les informations relatives aux tables et aux fichiers de données (physiques ou logiques) mais également celles liées aux DSPF et aux PRTF.

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.