带输出参数的存储过程的使用及在C#中调用问题
2005-03-17 18:53
866 查看
创建示例存储过程的完整的语句:
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才恍悟。
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才恍悟。
相关文章推荐
- 带输出参数的存储过程的使用及在C#中调用问题
- 带输出参数的存储过程的使用及在C#中调用问题
- C#里调用带输出参数的存储过程
- c#调用带输出参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- c#调用带输出参数的存储过程
- 存储过程有输出参数,在c#中用nhibernate调用存储过程时,如何才能获取到一个结果集和这个输出参数呢?
- 使用SQLHelper类调用带输出、返回参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- C# 调用带有输出参数的分页存储过程
- C#带输出参数的存储过程调用
- C#调用存储过程带输出参数或返回值
- 存储过程输出参数、返回值、返回表及C#调用
- 存储过程的参数问题与C#中的调用
- C#调用存储过程带输出参数或返回值
- C#中调用存储过程:带输入输出参数
- 关于JDBC使用命名参数(named parameters)进行存储过程调用的问题
- C#调用存储过程带输出参数或返回值分类(转)
- 存储过程输出参数:C#中调用输入输出参数的存储过程
- 关于C#调用存储过程,带输出参数,存储过程