[英]How to execute an Oracle function that returns a sys_refcursor using NHibernate?
這是功能:
FUNCTION GET_ALL(P_USER_ID IN VARCHAR2) RETURN SYS_REFCURSOR IS
C SYS_REFCURSOR;
BEGIN
OPEN C
FOR 'SELECT * FROM XYZ WHERE USER_ID = :P_USER_ID'
USING P_USER_ID;
RETURN C;
END;
我正在嘗試使用NHibernate調用此函數,如下所示:
Session
.CreateSQLQuery("BEGIN ? = PKG.GET_ALL(:P_USER_ID); END;")
.SetString("P_USER_ID", "SOMEONE")
.List<XYZ>();
歡迎任何代碼,提示或煙熏跡象。
PS:我正在使用NHibernate 3.3.0.GA
從官方文檔 :
對於Oracle,適用以下規則:
函數必須返回結果集。 過程的第一個參數必須是返回結果集的OUT。 這是通過在Oracle 9或10中使用SYS_REFCURSOR類型完成的。在Oracle中,您需要定義REF CURSOR類型,請參見Oracle文獻。
在https://github.com/nhibernate/nhibernate-core/tree/master/src/NHibernate.Test/SqlTest/Custom/Oracle中有具有完整映射和存儲過程代碼的有效測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.