2010-07-22 246 views
0

NHibernate(v2.1.2)的當前版本是否支持訪問Oracle存儲過程輸出REFCURSOR 此外到輸出參數?NHibernate訪問Oracle存儲過程REFCURSOR和輸出參數

我可以用我的代碼訪問輸出refcursor罰款。但是我不知道我可以在同一個存儲過程中訪問額外的輸出參數。

調用語法的一些示例將不勝感激。謝謝。

回答

1

不,它不。只支持一個refcursor,它必須是sproc中的第一個參數。

您可以始終從會話中獲取IDbConnection,然後使用純ODP.Net處理此類情況(您失去了nh功能),或者更改存儲過程。

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(); 
}