1

iBatis.NET을 사용하여 저장 프로 시저의 반환 값을 검색하는 방법은 무엇입니까? 아래의 코드는 성공적으로iBatis.NET을 사용하여 저장 프로 시저의 반환 값 가져 오기

<procedure id="MyProc" parameterMap="MyProcParameters" resultClass="int"> 
    MyProc 
</procedure> 

<parameterMap id="MyProcParameters"> 
    <parameter property="num"/> 
</parameterMap> 

C# 코드

하는 SQLMaps 저장 프로 시저를 호출하지만의 queryForObject <INT> 호출이 반환 0

절차

저장
public int RunMyProc(string num) 
{ 
    return QueryForObject <int> ("MyProc", new Hashtable { { "num", num } }); 
} 

create procedure MyProc @num nvarchar(512) as begin return convert(int, @num) end 

참고로, 나는 기능과 같은 반환 값이없는 iBatis를 1.6.1.0, .NET 3.5 및 SQL Server 2008

답변

1

꽤 아니지만,이 작품 :

하는 SQLMaps를

<statement id="MyProc" parameterClass="string" resultClass="int"> 
    declare @num int 
    exec @num = MyProC#value# 
    select @num 
</statement> 

C# 코드

public int RunMyProc(string num) 
{ 
    return QueryForObject <int> ("MyProc", num); 
} 
0

저장 프로 시저를 사용하고 있습니다.
그래서, 나는 그것이 효과가 있다고 생각하지 않습니다. 대신 출력 매개 변수를 사용해보십시오.

+0

저장 프로 시저는 SQL Server에서 값을 반환 할 수 있습니다. – MikeWyatt

+0

네, 맞습니다. 그 기능을 사용해야한다면 (스토어드 프로 시저 인 경우 호출자가 리턴 값을 보지 않는다고 가정 할 때) 확실하지 않습니다. – shahkalpesh

+0

다른 사람이 호출 한 코드를 작성할 때마다 올바르게 사용할 수 없습니다. 사용 가능한 모든 기능을 사용하지 않아도됩니다. 0 = ok, <0은 사소한 오류 (유효성 검사 등),> 0은 치명적인 오류 (제약 조건 등)입니다.이 질문의 코드의 경우, 출력 매개 변수가 가장 좋으므로 문자열이 숫자가 아닌 경우 오류 코드가 반환 될 수 있습니다. 리턴 값은 널이 아닌 정수 여야합니다. 출력 매개 변수는 거의 모든 데이터 유형이 될 수 있습니다. –

0

나는 응용 프로그램 논리에 대해 잘 모르겠지만, 당신의 절차는 더 나은 같은 것 :

create procedure MyProc 
    @num nvarchar(512) 
as 
begin 
    DECLARE @ReturnValue int 
    BEGIN TRY 
     SET @ReturnValue=convert(int, @num) 
    END TRY 
    BEGIN CATCH 
     SET @ReturnValue=0 --procedures can not return null, so set some default here 
    END CATCH 
    return @ReturnValue 
end 
1

반환 값을 검색하는 방법에 대해서는 다음 문서 http://www.barebonescoder.com/2010/04/ibatis-net-stored-procedures-return-values/을 참조하십시오.

마지막 쿼리 문이 저장 프로 시저의 return 문인 QueryForObject 및 Insert 시나리오에서이 예제를 사용했습니다.

"parameterMap"요소의 class 속성에 특히주의하십시오. 위의 답변보다 훨씬 더 귀엽습니다. IBatis.Net을 사용하는 방법과 더 밀접한 관계가 있다고 생각합니다.

관련 문제