从SQL Server存储过程返回值?

时间:2014-07-09 04:47:31

标签: c# sql-server stored-procedures vb6

我想知道除OUT参数之外是否有任何方法可以将存储过程中的数据转换为C#代码。

今天我的同事告诉我,存储过程中的所有select个查询和OUT参数都会返回给C#代码。它是否正确?如果是,那么如何选择应返回哪些结果?

对于VB6代码而不是c#,答案是否相同?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用 OUT 参数或SP中的 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

答案 1 :(得分:1)

是的,这是正确的 - 你处理这个问题的方式是:

  • 要获取OUT参数,您需要使用SqlParameter

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

  • 实际上是第三种方式:存储过程中的RETURN关键字 - 通常用于返回数字状态值。您可以使用值SqlParameter

  • ParameterDirection.ReturnValue来捕获它