2014-07-09 12 views
0

Я хочу знать, есть ли какой-либо способ помимо параметра OUT, чтобы получить данные из хранимой процедуры в код C#.Возвращаемые значения из хранимой процедуры SQL Server?

Сегодня мой коллега сказал мне, что все select запросов и параметры OUT в хранимой процедуре возвращаются в код C#. Это верно? Если да, то как мне выбрать, какие результаты должны быть возвращены?

Ответ на этот вопрос в случае кода VB6 вместо C#?

+1

Что вы пытаетесь сделать? Вы хотите получить одно значение? или несколько значений? – paqogomez

ответ

1

Да, вы можете вернуть значения обратно в приложение из SP, используя либо OUT параметров или ЗЕЬЕСТА в рамках СП.

Параметры 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

+0

1-й вопрос: что такое m_SPStatusReturned> 0? Вы имеете в виду SPStatus> 0? – variable

+0

2-й вопрос: что, если есть несколько запросов на выбор, то все они передаются в C# .net ?? – variable

+0

3-й вопрос: вы набрали -> SELECT @ SPStatus = 0, should'nt это SET @ SPStatus = 0 ?? – variable

1

Да, это правильно - и то, как вы справиться с этим:

  • получить OUT параметр, необходимо определить SqlParameter на вашем SqlCommand с ParameterDirection.Output

  • , чтобы получить набор результатов из SELECT в хранимой процедуре вам нужно использовать SqlDataReader или SqlDataAdapter, чтобы получить результаты (как если бы вы выполнили встроенный запрос SQL SELECT)

  • и на самом деле есть третий способ: ключевое слово RETURN внутри хранимой процедуры - обычно используется для возврата числового значения состояния. Вы можете захватить, что с помощью SqlParameter со значением ParameterDirection.ReturnValue

Смежные вопросы