我想列出我选择的任何Adventureworks表的所有列。我可以执行什么T-sQL语句或存储过程来查看所有列的列表?我想用我的C#web应用程序输入一个输入参数= table_name,然后获取所有列名作为输出的列表。现在我正在尝试执行sp_columns存储过程,但是我无法仅使用select和exec组合的一列。有人知道怎么做这个吗?在T-SQL中如何显示给定表名的列?
谢谢大家的所有答复,但没有你的答案做我需要的。让我更为你解释我的问题。下面的查询返回我需要的。但我的问题是将这个逻辑合并到一个接受输入参数的SP中。因此,这里是成功的SQL语句:
select col.name from sysobjects obj inner join syscolumns col
on obj.id = col.id
where obj.name = 'AddressType'
order by obj.name
而且目前我的SP的样子:
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
但我运行上面的
exec getColumnNames 'AddressType'
,它给我的错误:
Invalid column name 'AddressType'
我该怎么办这么做?
这是一个语法错误,请参阅下面的答案。 – egrunin 2010-04-08 21:21:08