事情是这样的:
DECLARE @ID int
DECLARE @Name nvarchar(50)
IF(....)
RETURN 1 // 此处正常
IF(....)
RETURN 2 // 此处正常
......................
SELECT @ID=XXX, @Name=XXXX FROM tableX WHERE XX=XX -- 语句1, 赋值
SELECT @ID, @Name -- 语句2, 读取
UPDATE abc SET ....... -- 语句3, 更新一些东西
RETURN 0 --- 语句四 (问题所在)
================================================
在SQL SERVER 查询编辑器里可以得到语句四的值(此处是0),但是通过cmd.ExecuteReader 之后,得到的总是NULL.
凡是放在语句2之前的RETURN语句都可以得到值(如'1', '2'),凡在语句2之后就变成NULL。 但是语句3可以正常执行。
查询编辑器里执行都是合乎逻辑的结果。
可是用SqlParameter(......Direction.RetrunValue.....) 接收,总是得不到语句四的0。