【发布时间】:2016-04-17 05:11:10
【问题描述】:
我在某些页面中看到了这个错误,但就我而言,我在这里找不到问题。
执行我的程序时出现错误。
exec sp_executesql N' EXEC UpdateEmployee @EmployeeID, @Status ',N'@EmployeeID bigint,@Status int',@EmployeeID=2,@Status=5
CREATE PROCEDURE UpdateEmployee
(
@EmployeeID BIGINT,
@StatusID int
)
AS
IF @StatusID = 0
BEGIN
SET @StatusID = null
END
UPDATE Employee SET StatusID = @StatusID WHERE EmployeeID = @EmployeeID
GO
我收到以下错误:
Msg 137, Level 15, State 2, Line 1 必须声明标量变量 “@StatusID”。
表employee上我的字段StatusID是int类型并且可以为空
我没有忘记声明变量。事实上,它是我的程序的一个 IN 参数。那么,怎么了?
更新 - 已修复
我意识到问题来自库生成的查询。我使用的是参数@Status 而不是@StatusID。这就是问题所在。感谢您的帮助。
【问题讨论】:
-
为什么要使用动态 sql 执行 sp?你可以像这样执行它 - exec UpdateEmployee @EmployeeID=2,@StatusID=5
-
这是一个ORM库生成的输出
-
右键单击 SSMS 中的过程并选择执行。传递参数,看看会发生什么。
标签: sql-server stored-procedures scalar