存储过程的返回值

1,用output关键字声明的参数。

     sql脚本:

ContractedBlock.gif ExpandedBlockStart.gif Code
CREATE PROC proc_name
(@parameter1 
int OUTPUT,[])
as
sqlstatement
     C#
ContractedBlock.gif ExpandedBlockStart.gif Code
/*创建command,text域,type域*/
cmd.Parameters.Add(
"@Parameter1",SqlDbType.Int);
cmd.Parameters[
"@Parameter1"].Direction=ParameterDirection.OutPut;
cmd.Execute
***();//任何执行方式
str=cmd.Parameters["@Parameter1"].value.ToString();

OUTPUT参数不仅可以传递输出值,也可以为其指定输入值

2,返回代码(proc中的return语句)

 返回代码与return关键字一样都是可选的。

ContractedBlock.gif ExpandedBlockStart.gif Code
/*类似上文*/
cmd.Parameter.Add(
"@ret",SqlDbType.Int).Direction=ParameterDirection.ReturnValue;
cmd.Execute
***();
int ret=int.Parse(cmd.Parameters["@ret"].Value.ToSting());

3,游标返回类型(VARYING关键字),返回类型为非标量值,因此可以返回多个值(结果集)。

在ADO.NET中,不能是用返回游标的存储过程,只能在SQL脚本里用。

4,影响行数计数。

记录sql语句所影响的行数,通常无用。

SET NOCOUNT ON 不返回计数,将大量减少网络流量,提高性能。(此子句也可用于触发器等等中)

SET NOCOUNT OFF 返回计数。

5,SELECT结果集。这个返回是与return,output等返回相独立的。

proc每次执行select语句都将返回结果,因此可能返回多个结果集。

联想SqlDataReader.NextResult()方法,用于从一个结果集移到下一个结果集。

而SqlDataReader.Read()是在一个结果集的行间做前向遍历。

转载于:https://www.cnblogs.com/hustliangchen/archive/2008/08/31/1280542.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值