当前位置:  开发笔记 > 编程语言 > 正文

从C#中的存储过程返回值

如何解决《从C#中的存储过程返回值》经验,为你挑选了1个好方法。

我已经看到了一些与此相似的问题,但没有一个完全相同.无论如何,我有一个以行结束的存储过程,

select SCOPE_IDENTITY()
return

然后我通过电话获得价值executeScalar().这非常有效.但是,我觉得结束时更为正确return select SCOPE_IDENTITY()(而不是为此返回值创建新参数).这可能吗?



1> Charles Bret..:

有三种方式,一般情况下做到这一点...你可以做你正在做的事情 - 一个选择 - 实际上返回单行,单柱结果集和出租ADO.Net拉动价值为你.要么

你可以使用return语句来返回值,(这种方法篡改了返回错误代码的返回值的常用用法模式)或者

您可以使用所谓的输出参数(有效传递存储过程的引用参数,它(的PROC)可以用一个值,那么这将是提供给ADO.net调用代码PROC返回后填充.. .

每个人都有advanteges和DIS-广告...我喜欢的第一个选项是最简单和最容易的代码...(这不是最perfomant)最好原因

在存储过程中使用输出参数的示例...

  Create Procedure MyProc
  @Name varchar(20),
  @DOB DateTime,
  @EmployeeId Integer Output = Null
  As
  Set NoCount On

     If @EmployeeId Is Null 
       Begin
          Insert Employees(Name, DateofBirth)
          Values (@Name, @DOB)
          Set @EmployeeId = Scope_Identity()
       End
     Else If Exists(Select * From Employees
                    Where EmployeeId =@EmployeeId)
       Begin
           Update Employees Set
              Name = Isnull(@Name, Name),
              DateOfBirth = IsNull(@DOB, DateOfBirth)
           Where EmployeeId = @EmployeeId
       End
     Else
        Raiserror('EmployeeId %d is missing or has been deleted.',
                   16, 1, @EmployeeId)

     Return 0

当您从ADO.Net调用存储过程,而这个参数添加到参数采集...还有就是需要被称为ParameterDirection,可以采取ParameterDirection.InputOutput或ParameterDirection.Output值枚举的方法参数的重载, (其中包括)

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有