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'이라는 테이블이 있습니까? –
내 잘못으로 @TabName을 읽어야합니다. 나는 변화를 만들었다. 여전히 작동하지 않습니다. – user1549571
테이블 이름을 동적 쿼리에 연결하거나 매개 변수로 전달해야합니다. 'CT_CONF'를 찾아야 할 때'@ TabName'이라는 테이블을 찾고 있습니다. –