Lors de l'écriture d'un programme qui interface Java et DB2 via le pilote JDBC, j'ai tenté d'écrire un programme qui récupérait toutes les données (tous les enregistrements contenus dans toutes les tables) dans une base de données donnée. Lorsque j'ai lancé le programme, j'ai constaté que cela fonctionnait surtout. Cependant, il y avait plusieurs tables dont il n'a pas collecté de données. J'ai accédé à ces tables à partir de l'éditeur de commandes fourni par IBM et j'ai constaté qu'elles contenaient des données. J'ai couruTypes de tables dans DB2
SELECT * FROM SYSCAT.COLUMNS OÙ TABNAME = 'Table'
contre la base de données et a constaté que ces tables avaient aucune trace de colonne dans la table SYSCAT.COLUMNS. Croire que je mal orthographiés nom de la table, j'ai couru
SELECT * FROM SYSCAT.COLUMNS
contre la base de données et regardé manuellement la table sous TABNAME. Je ne pouvais pas le trouver. Quand je courais
SELECT * FROM SYSCAT.TABLES
J'ai trouvé la table dans la liste des tables disponibles. Cependant, dans SYSCAT.TABLES, j'ai également trouvé qu'aucune table de TYPE 'A' n'avait d'enregistrements dans SYSCAT.COLUMNS. Je me demandais quel était le raisonnement d'IBM et comment je pouvais savoir quels étaient les noms de champs pour ces types particuliers de tables. Comment puis-je obtenir des noms de colonnes pour DB2 sans utiliser SYSCAT.COLUMNS via une requête SQL standard à une base de données DB2?