从SQL Server存储过程返回值

本文关键字:返回值 存储过程 Server SQL | 更新日期: 2023-09-27 18:12:00

我想知道除了OUT参数之外,是否还有其他方法可以从存储过程中获取数据到c#代码中。

今天我的同事告诉我,所有的select查询和OUT参数在存储过程中返回到c#代码。这是正确的吗?如果是,那么我如何选择应该返回哪些结果?

在VB6代码而不是c#的情况下,答案是一样的吗?

从SQL Server存储过程返回值

是的,您可以使用OUT参数或SELECT从SP返回值给应用程序。

OUT参数通常用于单个值。SELECT可用于返回结果行。两者的组合可以在许多不同的变体中使用,例如SP将返回行,状态OUT参数可以指示所请求数据的行数或是否存在。

CREATE PROC usp_MySpecialSP
  @conditionValue INT, @SPStatus INT OUT
AS
  IF EXISTS(SELECT * FROM TableName WHERE column1=conditionValue)
  BEGIN
    SELECT @SPStatus=COUNT(*) FROM TableName WHERE column1=conditionValue
    SELECT Column2, Column3, Column4 FROM TableName WHERE column1=conditionValue
  END
  ELSE
  BEGIN
    SELECT @SPStatus=0
  END
GO

这里你可以拾取值,如果m_SPStatusReturned>0

查看下面的MSDN文章如何从SP中提取返回的行http://msdn.microsoft.com/en-us/library/d7125bke.aspx

或使用SELECT的单个值http://msdn.microsoft.com/en-us/library/37hwc7kt.aspx

是的,这是正确的-你处理它的方法是:

  • 要获得OUT参数,您需要使用ParameterDirection.Output

  • SqlCommand上定义SqlParameter
  • 要获取存储过程中SELECT的结果集,需要使用SqlDataReaderSqlDataAdapter来获取结果(就像执行内联SQL SELECT查询一样)

  • ,实际上还有第三种方法:存储过程中的RETURN关键字—通常用于返回数值状态值。您可以通过使用ParameterDirection.ReturnValue

  • 值的SqlParameter来捕获它。