小编Arv*_*ind的帖子

无法将列名作为参数传递给sp_executesql

我在执行以下代码时遇到问题,这给我一个错误,如下所示:

消息102,级别15,状态1,第3行'@ST'附近的语法不正确。

我可以尝试使用动态SQL来实现登录,但是想尝试该sp_executesql方法。如果发生语法错误,或者不应该将表名作为参数传递,请告诉我?

DECLARE @SQL NVARCHAR(4000)= '';
SET @SQL = N'--INSERT INTO #missingkeys ( SOURCE_KEY,[ROWCOUNT] ) 
SELECT  S.[SOURCE_KEY], COUNT(1) AS [ROWCOUNT] FROM (SELECT DISTINCT   @SK AS [SOURCE_KEY] 
FROM [PDA].@ST ) AS S
LEFT JOIN [PDA].@MT   AS T 
ON T.[SOURCE_KEY] = S.[SOURCE_KEY]
GROUP BY S.[SOURCE_KEY]';
DECLARE @SOURCETABLE NVARCHAR(255)= 'FACT';
DECLARE @SOURCE_KEY NVARCHAR(255)= 'KEY', @MAP_TABLE NVARCHAR(255)= 'DimMap';
EXEC sp_executesql
 @SQL,
 N'@SK nvarchar(255), @ST nVARCHAR(255), @MT nVARCHAR(255)',
 @SK = @SOURCE_KEY,
 @ST = @SOURCETABLE,
 @MT = @MAP_TABLE;
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server dynamic-sql

4
推荐指数
1
解决办法
276
查看次数

标签 统计

dynamic-sql ×1

sql-server ×1

t-sql ×1