1
我需要能够列出给定表的列。 当我运行以下命令:sp_executesql不返回值
DECLARE @ColList Varchar(Max)
DECLARE @TabName varchar(100) = 'CT_CONF'
SELECT @ColList = CASE WHEN @ColList IS NULL THEN '''' ELSE @ColList + ',' END + column_name
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TabName
and DATA_TYPE not in ('xml','Text','Image','Geometry','Geography')
and COLUMN_NAME not in ('LAST_MODIFIED')
order by ordinal_position
select @ColList
我得到的输出我需要的,但是,当我尝试如下sp_executesql的运行,我得不到任何回报。
DECLARE @TabName varchar(100) = 'CT_CONF'
DECLARE @SQL NVarchar(Max)
DECLARE @ColList Varchar(Max)
Declare @Params nvarchar(Max)
SET @SQL = N'
select @ColList = CASE WHEN @ColList IS NULL THEN '''' ELSE @ColList + '','' END + column_name
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = ''@TabName ''
and DATA_TYPE not in (''xml'',''Text'',''Image'',''Geometry'',''Geography'')
and COLUMN_NAME not in (''LAST_MODIFIED'')
order by ordinal_position
'
set @Params = N'@ColList varchar(Max) OUTPUT'
EXEC sp_executesql @SQL, @Params, @ColList OUTPUT
select @ColList
我在做什么错?
感谢, 尤金
你有一个名为'@ SourceTable'的表吗? – 2012-07-25 18:05:00
我的错,它应该读取@TabName。我做了一个改变。仍然无法工作。 – user1549571 2012-07-25 18:22:21
您需要将表名连接到动态查询或将其作为参数传递。现在它正在寻找名为'@ TabName'的表,当它应该查找'CT_CONF'时。 – 2012-07-25 18:28:28