J'essaie de sélectionner les noms de colonne d'une view
de la même manière que si vous sélectionniez dans information_schema.columns
.
Je n'arrive pas à trouver un moyen de faire ça. Est-ce que quelqu'un d'autre a déjà fait cela ou sait si c'est même possible?
information_schema.columns.Table_name (au moins sous SQL Server 2000) inclut des vues, il suffit donc d'utiliser
SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME'
Essaye ça:
SELECT *
FROM sys.views
Cela vous donne les vues en tant que telles - si vous avez besoin des colonnes, utilisez ceci:
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.YourViewNameHere')
Je ne sais pas comment vous pouvez le faire avec le INFORMATION_SCHEMA
- je ne l'utilise jamais, car cela semble plutôt "maladroit" et peu intuitif, comparé aux vues du catalogue de schémas sys
.
Reportez-vous à la documentation MSDN sur les vues de catalogue pour obtenir tous les détails sur toutes les vues disponibles et sur les informations qu’elles peuvent contenir.
Les vues INFORMATION_SCHEMA contiennent des métadonnées sur les objets de la base de données. INFORMATION_SCHEMA.COLUMNS utilise les tables système sous-jacentes pour récupérer les métadonnées (vérifiez sp_helptext 'master.Information_schema.columns'). Vous pouvez utiliser cette requête plus simple pour sélectionner les noms de colonne utilisés dans n’importe quelle vue.
SELECT col.name
FROM <db_name>.sys.columns col, <db_name>.sys.views vew
WHERE col.object_id = vew.object_id
AND vew.name = '<view_name>'
SELECT distinct VIEW_NAME
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
--WHERE TABLE_SCHEMA = 'Person'
ORDER BY
VIEW_NAME
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME