2010-07-22 3 views
0

NHibernate (v2.1.2)의 현재 버전은 출력 매개 변수에을 추가로 저장하는 Oracle 저장 프로 시저 출력 REFCURSOR 을 지원합니까?NHibernate는 오라클 저장 프로 시저 REFCURSOR 및 출력 매개 변수에 액세스합니다.

출력 코드 refcursor에 내 코드로 액세스 할 수 있습니다. 그러나 나는 같은 저장 프로 시저에서 추가 출력 매개 변수에 액세스 할 수 있는지 모르겠습니다.

일부 호출 구문 샘플은 크게 감사하겠습니다. 감사.

답변

1

아니요. 하나의 refcursor 만 지원되며 sproc의 첫 번째 매개 변수 여야합니다.

세션에서 항상 IDbConnection을 가져온 다음 이러한 시나리오 (일반 사용자 기능을 상실 함)에 대해 일반 ODP.Net을 사용하거나 대신 저장 프로 시저를 변경할 수 있습니다.

0

NHibernate를 사용하여 이전 저장 프로 시저를 호출하는 솔루션을 찾았습니다.

나는 그게 더 좋은 방법이라고 생각하지 않지만, 우리가 일반적으로 그렇게 모든 것을, 리팩토링 할 시간이 없습니다 :

using (ITransaction transaction = _session.BeginTransaction()) { 
    IDbCommand command = new OracleCommand(); 
    command.Connection = _session.Connection; 

    command.CommandType = CommandType.StoredProcedure; 
    command.CommandText = "pk_package.pr_procedure"; 

    // Set input parameters 
    var param1 = new OracleParameter("@param1", OracleDbType.Decimal) {Value = someField}; 
    var param2 = new OracleParameter("@param2", OracleDbType.Decimal) {Value = 1}; 

    command.Parameters.Add(param1); 
    command.Parameters.Add(param2); 

    // Execute the stored procedure 
    command.ExecuteNonQuery(); 
    transaction.Commit(); 
}