带参数语法错误的sp_executesql

时间:2014-01-24 14:45:01

标签: sql-server sql-server-2008 tsql

@id NVARCHAR(12),
@query NVARCHAR(500),
@paramDef NVARCHAR(100) = N'@id NVARCHAR(12)'

我在下面的这一行有一个语法错误,特别是在@id

set @query = N'select * from OPENQUERY([REMOTESERVER], ''EXEC db.dbo.dwStoredProc_sp ''@id'')'''

然后我使用

exec sp_executesql @query, @paramDef, @id

我希望我的单引号不正确。

3 个答案:

答案 0 :(得分:4)

您的上次)出错了,@id周围不需要引号。尝试

set @query = 
  N'select * from OPENQUERY([REMOTESERVER], ''EXEC db.dbo.dwStoredProc_sp ' + @id + ''')'

答案 1 :(得分:1)

您可能不希望将'@id'作为字符串传递给SP。

这很可能是你的意思:

set @query = N'select * from OPENQUERY([REMOTESERVER], ''EXEC db.dbo.dwStoredProc_sp ' + @id + ''')';

答案 2 :(得分:1)

显然,这是一个报价问题。

但论坛给你的答案并没有给你工具在将来找到问题。

这是一般调试问题。下次打印出动态TSQL。切入并进入另一个窗口。

你会很快找到你的问题。查看鲜为人知的处理指令命令。

非常适合大量的多行声明。

-- Old school output to message window
PRINT @query 

-- Cool instruction ?  Code in new xml tab.
SELECT @query  as [processing-instruction(TSQL)] FOR XML PATH 

使用印刷品。

你应该给Juergen一个功劳!

enter image description here