我正在尝试列出我选择的 Adventureworks 表中的所有列。我可以执行什么 T-SQL 语句或存储过程来查看所有列的列表?我想使用我的 C# Web 应用程序输入一个输入参数 = table_name,然后获取所有 column_names 的列表作为输出。现在我正在尝试执行 sp_columns 存储的过程,它可以工作,但我不能只得到一个结合了 select 和 exec 的列。有人知道怎么做这个吗?
感谢大家的所有回复,但您的回答都没有满足我的需求。让我为你解释一下我的问题。下面的查询返回我需要的内容。但我的问题是将这个逻辑合并到一个带有输入参数的 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'
我该如何做到这一点?