【发布时间】:2014-11-07 09:04:39
【问题描述】:
CREATE PROCEDURE dbo.test2
AS
BEGIN
DECLARE @status as int
DECLARE @error as int
SET @status = 1
SET @Error = @@ERROR
UPDATE dbo.BView
SET bview='dar'
WHERE pt='foo'
IF @Error > 0
print 'ERROR'
else
SELECT @status as 'status'
END;
为什么这个查询总是返回局部变量@status的默认值而不管分配给它什么?
status
------
0
服务器版本:MS SQL Server 2014 Express
【问题讨论】:
-
我没有听说过有默认值的变量。如果你没有初始化变量,那么你会得到
NULL!! -
默认值为1后你分配了什么?
-
预期结果是什么。
-
您使用的是什么版本的 SQL Server?在 SQL Server 2008 ... 之前,使用
DECLARE语句的隐式初始化不可用 -
无法重现 - 按预期输出
1....(在 SQL Server 2012 开发人员版上)
标签: sql-server local-variables