2017-03-06 3 views
0

Dapper를 사용하고 있습니다. 더 행복 할 수는 없지만 here과 같이 일반적인 저장 프로 시저에 액세스하는 방법을 알고 있습니다. 그러나 Npgsqlrefcursor 이름을 전달하는 방법은 무엇입니까? proc (C# 사용)? 예를 들어 :refcursor 매개 변수 쿼리를 사용하여 Dapper/Npgsql 저장 프로 시저

FUNCTION xx.getData(
    v_ref refcursor, 
    v_id integer) 
    RETURNS refcursor AS 
... 

어떻게 xx.getData에 대한 매개 변수를 지정합니다 :

나는처럼 보이는 시저가? getData는 int 형의 한 매개 변수를 허용하는 경우

예를 들어, 나는 그렇게처럼 호출 할 수 있습니다

var data = cnn.Query<myType>("xx.getData", new {Id = 1}, 
     commandType: CommandType.StoredProcedure); 

또는

var p = new DynamicParameters(); 
p.Add("@id", 11); 
cnn.Execute("xx.getData", p, commandType: CommandType.StoredProcedure); 

내가 System.DbType에 올바른 유형을 찾을 수 없습니다 쿼리에서 전달할 수 있습니다.

답변

1

refcursor는 이전 호출에서 이미 열려있는 활성 커서에 해당합니다. 즉, 저장 프로 시저에 해당하는 것이 아니라 결과 집합에 해당합니다 (저장 프로 시저에서 반환 될 필요는 없지만).

당신이 정말로 refcursor를 보낼 필요가있는 경우에 대비하여, 당신이 찾고있는 것은 NpgsqlDbType.Refcursor입니다.

+0

아한, 감사합니다. 사실, Dapper의'DynamicParameters.Add (...)'는'System.DbType' 인수를 받아 들여서'NpgsqlDbType.RefCursor'에 대응하는 타입이 없습니다 (적어도 하나는 알아 내지 못합니다). – Achilles

+0

Dapper 사용자 정의 유형 핸들러 –

관련 문제