2012-08-01 4 views
1

저장 프로 시저에서 반환 값을 가져 오는 방법은 무엇입니까?저장 프로 시저에서 반환 값 가져 오기

enter image description here

내가 저장 프로 시저가 자체적으로 정수를 반환 것으로 나타났습니다. C#에서 가져와야합니다.

+0

여기에서 성취하고자하는 것이 있습니까? – Umesh

+0

그럼 SP를 호출하는 방법을 말해야합니다. 어떤 코드가 도움이 될 것입니다. – V4Vendetta

+0

upvote를 잊어 버리고 받아 들일 수있는 것으로 표시하지 마십시오. –

답변

2

C#의 Return 매개 변수를 사용하여 해당 값을 얻을 수 있습니다.

SqlParameter retval = sqlcomm.Parameters.Add("@return_value", SqlDbType.VarChar); 
retval.Direction = ParameterDirection.ReturnValue; 
sqlcomm.ExecuteNonQuery(); 
string retunvalue = (string)sqlcomm.Parameters["@return_value"].Value; 

다음과 같이 프로 시저가 반환해야합니다 같은 값을 가져올 수 있도록 : 당신의 SP에

create procedure [dbo].[usp_GetNewSeqVal] 
     @SeqName nvarchar(255) 
as begin 
    declare @NewSeqVal int 
    select @NewSeqVal =1 
    ---other statement 
    return @NewSeqVal 
end 
0

, 당신은 KategoriId를 반환해야합니다. 기본적으로 SP는 최신 삽입, 업데이트 또는 삭제 문의 영향을받는 행 수를 반환합니다.

그리고 C# 및 데이터베이스 열 KategoriId에서 적절한 데이터 형식을 사용하여이 작업을 수행하십시오. 과거에는 데이터베이스 열이 Decimal이고 int에 반환 값을 할당하려고 시도했지만 문제가 없었습니다. 코드에 따라

1

확인 : 더 참조 확인 링크를 들어

SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar); 
retval.Direction = ParameterDirection.ReturnValue; 
sqlcomm.ExecuteNonQuery(); // MISSING 
string retunvalue = (string)sqlcomm.Parameters["@b"].Value; 

: Getting return value from stored procedure in C#

-1

당신은 저장 프로 시저에 output 매개 변수를 사용하거나 대신 ExecuteNonQueryExecuteScalar를 사용할 수 있습니다.

+0

이것은 단지 잘못되었습니다 : ExecuteScalar는 단일 행, 단일 열을 반환합니다 저장 프로 시저에서 ** SELECTED **가되고 ** RETURN x 문에서 값을 반환하지 않습니다! 'OUTPUT' 매개 변수는'** RETURN' 문의 값과 ** 아무 것도하지 않습니다. –

관련 문제