MS SQL - 语法和标量错误在哪里?

MS SQL - Where are the syntax and scalar errors?

我整个上午都在为这堵砖墙苦苦思索。这是我收到的错误的一个非常简单的示例。我正在使用 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

错误:

Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '5'. Msg 137, Level 15, State 2, Line 1 Must declare the scalar variable "@myid".

为什么我会收到语法和标量错误? @myid 有定义对吧?

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;