簡體   English   中英

如何執行使用NHibernate返回sys_refcursor的Oracle函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM