存储过程output参数问题
下面的存储过程,ID1是同时作为输入输出参数的。
CREATE Procedure usp_test
@ID1 int output,
@ID int
AS
IF @ID1 = 0
BEGIN
SELECT * FROM Customers
SET @ID1 = 1
end
ELSE
begin
SELECT Employees.* FROM Employees
SET @ID1 = 2
end
GO
通过查询分析器直接运行还是通过VS.NET都能正常运行,可是当用ado.net写一个程序调用时,就不一样了。设置ID1这个参数等于0根本没有用,从Profiler来看,ID1一上来就是1,IF那部分不会执行下去。
不过,如果将两个参数调整一下位置就可以了
CREATE Procedure usp_test
@ID int,
@ID1 int output
AS .....
有些奇怪,因无从下手找KB,不知道这个是不是ADO.NET的问题,还是其他问题
(1-15更新)
问题好像不是那么简单,今天无论调整成怎样都不行。后来又好了,但是不关次序的问题,而是与设置ParameterDirection.InputOutput还是ParameterDirection.Output有关。而且发现当是ParameterDirectioin.Output的时候,参数设置什么都没有用,都是NULL,存储过程改称
IF @ID1 = 0 OR @ID1 is NULL
就可以了
不过,即使设置了ID1=1也执行不了ELSE的内容,奇怪的问题。
浙公网安备 33010602011771号