【发布时间】:2018-01-19 06:28:29
【问题描述】:
我在执行以下代码时遇到问题,它给了我如下错误:
消息 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;
【问题讨论】:
标签: sql-server tsql dynamic-sql