我整个早上一直在这个砖墙上敲打我的头。这是我收到的错误的一个非常简单的例子。我正在使用SSMS。
DECLARE @myid nvarchar(10) = '5'
DECLARE @sql nvarchar(2048) = 'SELECT id FROM Applications A WHERE A.id=@myid'
EXECUTE sp_executesql @sql, @myid=@myid
错误:
消息102,级别15,状态1,行1#5'附近的语法不正确。消息137, 等级15,状态2,行1必须声明标量变量" @ myid"。
为什么我会收到语法和标量错误? @myid是定义的,对吧?
答案 0 :(得分:4)
sp_executesql
需要接收您缺少的参数定义。因此,在您的情况下,您应该使用:
DECLARE @myid nvarchar(10) = '5';
DECLARE @sql nvarchar(2048) = 'SELECT id FROM Applications A WHERE A.id=@myid';
EXECUTE sp_executesql @sql, N'@myid nvarchar(10)', @myid=@myid;