SQL语句中的output

  恰好今天做项目遇见了,需要存储过程有返回值的情况。这里举个简单的例子进行说明:

一、output 作为返回值

  1.我们先看这个存储过程

  

ExpandedBlockStart.gif 代码
 1  set  ANSI_NULLS  ON
 2  set  QUOTED_IDENTIFIER  ON
 3  go
 4 
 5  -- added by hendyzhu  验证身份证的唯一性,排除同一个人有多个居民健康档案
 6  -- 2010-5-28
 7  create   procedure   [ dbo ] . [ DistinctSame ]
 8  (
 9  @ID   varchar ( 20 ),
10  @count   int  output --这里我们看到设置@count为output,即为输出型的参数
11  )
12  as  
13  begin
14  select   @count = count ( * from  MainArchives  where  ID = @ID
15  end
16 

 

  执行完这个存储过程之后,@count将作为该存储过程的返回值被返回。

  2.现在在C#代码中,我们就可以新建一个输出型参数,当数据库执行完查询之后,我们就可以通过getParameterValue()方法获取到存储过程的返回值。

  

ExpandedBlockStart.gif 代码
 1  public   static   bool  IsNotRegistered( string  id)
 2          {
 3              Database db  =  DatabaseFactory.CreateDatabase();
 4              DbCommand creditCommand  = db.GetStoredProcCommand( " dbo.DistinctSame " );
 5              db.AddInParameter(creditCommand,  " @ID " , DbType.StringFixedLength,id.Trim());
 6              db.AddOutParameter(creditCommand, " @count " ,DbType.StringFixedLength, 32767 );   // 注意到这里,给存储过程添加了一个@count输出型参数
 7              db.ExecuteNonQuery(creditCommand); // 执行查询
 8               int  result = int .Parse(db.GetParameterValue(creditCommand, " @count " ).ToString()); // 获取存储过程的返回值
 9               if  (result  ==   0 )
10              {
11                   return   true ;
12              }
13               else
14              {
15                   return   false ;
16              }
17          }

 

  3.通过上面一个简单的例子,我们就可以轻松的理解SQL语句中output的使用方法。

二、OUTPUT子句

  在OUTPUT子句中,可以引用特殊表inserted和deleted.使用inserted和deleted表与在触发器中使用的非常相似.
  这个我们可以详细参考IT智库网的一篇博文,写不错。

  http://www.it118.org/specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/ca647129-a56f-4adb-a7fe-24ab58dc3f0a.htm

转载于:https://www.cnblogs.com/hendy/archive/2010/05/28/1746321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值