J'essaye d'énumérer toutes les colonnes de n'importe quelle table d'Adventureworks que je choisis. Quelle instruction T-SQL ou procédure stockée puis-je exécuter pour voir cette liste de toutes les colonnes? Je veux utiliser mon application Web C# pour entrer un paramètre d'entrée = nom_table et obtenir une liste de tous les noms_colonnes en sortie. En ce moment j'essaye d'exécuter le proc stocké sp_columns qui fonctionne, mais je ne peux pas obtenir juste la colonne avec select et exec combinés. Est-ce que quelqu'un sait comment faire cela?Dans T-SQL comment afficher les colonnes pour un nom de table donné?
Merci à tous pour vos réponses, mais aucune de vos réponses ne répond à vos besoins. Laissez-moi vous expliquer mon problème plus pour vous. La requête ci-dessous renvoie ce dont j'ai besoin. Mais mon problème est d'incorporer cette logique dans un SP qui prend un paramètre d'entrée. Voici donc l'instruction SQL réussie:
select col.name from sysobjects obj inner join syscolumns col
on obj.id = col.id
where obj.name = 'AddressType'
order by obj.name
Et actuellement mon SP ressemble à:
CREATE PROCEDURE [dbo].[getColumnNames]
@TableName VarChar(50)
AS
BEGIN
SET NOCOUNT ON;
SET @TableName = RTRIM(@TableName)
DECLARE @cmd AS NVARCHAR(max)
SET @cmd = N'SELECT col.name from sysobjects obj ' +
'inner join syscolumns col on obj.id = col.id ' +
'where obj.name = ' + @TableName
EXEC sp_executesql @cmd
END
Mais je lance ci-dessus comme
exec getColumnNames 'AddressType'
et il me donne l'erreur:
Invalid column name 'AddressType'
Comment puis-je accom Plaisir ça?
C'est une erreur de syntaxe, voir ma réponse ci-dessous. – egrunin