带输出参数的存储过程的使用及在C#中调用问题

王朝c#·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

创建示例存储过程的完整的语句:

USE pubs

IF EXISTS (SELECT name FROM sysobjects

WHERE name = 'up_test ' AND type = 'P')

DROP PROCEDURE up_test

GO

create procedure up_test

@out_val integer=0 output

--@out_val integer output ------1

as

begin

--set @out_val=0 -----2

if(1=1) -----3

set @out_val=@out_val+1

return 9;

end

存储过程在查询分析其中使用示例:

1、简单调用

exec up_test 3

--注:调用时也要给输出参数传值,有给定默认值时可以不再给参数指定值

2、调用并使用存储过程中的输出参数和返回值

declare @ret_val int

declare @output_val int

exec @ret_val=up_test @out_val=@output_val output -----4

select @ret_val,@output_val

值得说明的是:如果只是给定了默认值,调用时未给该输出参数传值,并且存储过程体中并没有诸如set @out_val=0的显式为输出参数赋值的语句(使用set @out_val=@out_val+1是不行的),那么在执行完存储过程后,输出参数的带回值是NULL。这一点我在使用C#的调用中遇到了,还让我调试程序好久。后来在SQL Serve 查询分析器了看到NULL才恍悟。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航