Il y a plusieurs tables dans ma base de données sybase. Je veux connaître le nom de colonne et le type de données d'une table donnée, comme (table myOrder). Comment puis-je faire ceci? Sous le script que j'ai trouvé sur stackoverflow Dans une base de données Sybase, comment puis-je obtenir une description de la table (noms et types de champs)? . Mais cela me donne l'exception syscolumns is ambiguous
? Le script est ci-dessous que j'ai utilisé pour cela.
SELECT sc.*
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'
Pour extraire des types, j'utilise une telle requête:
SELECT syscolumns.name, systypes.name FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON systypes.type = syscolumns.type AND systypes.usertype = syscolumns.usertype
WHERE sysobjects.name LIKE 'my_table'
Pour obtenir les noms de colonne, les types de données et de nombreuses autres informations sur une table dans Sybase, utilisez la requête suivante.
Select * from systabcol
key join systab
where table_name = 'your_table_name'
Vous pouvez utiliser la procédure intégrée sp_columns. Il renverra toutes les métadonnées de la table, y compris le nom de la colonne, le type de données, la longueur de la colonne, etc. pour une table donnée.
sp_columns table_name
Juste pour ajouter un ajout utile ici, j'utilise SQL Anywhere 12 de Sybase. L'objet syscolumns (view) ne contient donc pas les mêmes informations que les autres versions de Sybase et nécessite donc de joindre des informations nommées. Cependant, cette vue consolidée, comme on l'appelle, est presque parfaitement capable d'elle-même ( voir sa documentation ici ).
Nous l'utilisons en fait pour vérifier les modifications apportées aux colonnes dans toutes les tables, en tant qu'outil d'assurance qualité, semblable à ceci:
Select *
From sys.syscolumns
Where (cname Like '%trk%' Or cname Like '%track%')
And cname not like '%ontrack%'
Order By tname;