第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從具有多個引用游標的 Hibernate 調用存儲過程

從具有多個引用游標的 Hibernate 調用存儲過程

千萬里不及你 2021-09-15 16:56:57
我正在嘗試從存儲過程中檢索值。這個存儲過程有兩個引用游標。下面是SP:create or replace PROCEDURE "EMP_JOB" (    p_job           VARCHAR2,    p_emp_refcur    IN OUT SYS_REFCURSOR,    p_sal_refcur    IN OUT SYS_REFCURSOR)ISBEGIN    OPEN p_emp_refcur FOR     SELECT empno, ename     FROM emp     WHERE job = p_job;    OPEN p_sal_refcur FOR     SELECT sal     FROM emp     WHERE job = p_job;END;這是我的Java代碼:StoredProcedureQuery query = entityManager.createStoredProcedureQuery("EMP_JOB")                .registerStoredProcedureParameter(1, String.class, ParameterMode.IN)                .registerStoredProcedureParameter(2,  Class.class, ParameterMode.REF_CURSOR)                .registerStoredProcedureParameter(3,  Class.class, ParameterMode.REF_CURSOR)                        .setParameter(1, "CLERK");query.execute();Iterator queryIterator = query.getResultList().iterator();ArrayList<Object> vinArray= new ArrayList<Object>();while(queryIterator.hasNext()){     Object st= (Object)queryIterator.next();     vinArray.add(st);}我可以檢索參數(shù) 2( p_emp_refcur IN OUT SYS_REFCURSOR)的輸出。如何獲得參數(shù) 3( p_sal_refcur IN OUT SYS_REFCURSOR)的輸出。任何幫助,將不勝感激。
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經(jīng)驗 獲得超11個贊

好像還是沒辦法。但是,這是通過從 Hibernate 獲取連接EntityManager然后使用CallableStatement.


// Session = org.hibernate.Session

// entityManager = javax.persistence.EntityManager


Session session = entityManager.unwrap(Session.class);

session.doWork(new Work() {


    @Override

    public void execute(Connection con) throws SQLException {

        // do something useful

        try (CallableStatement cs = con.prepareCall("{CALL TEST_PACKAGE.GETCURSORS(?,?,?)}")) {

            cs.setInt(1, 1);

            cs.registerOutParameter(2, OracleTypes.CURSOR);

            cs.registerOutParameter(3, OracleTypes.CURSOR);

            cs.execute();

            ResultSet rs = (ResultSet) cs.getObject(2);

            ResultSet rs1 = (ResultSet) cs.getObject(3);

            while (rs.next()) {

                int a = rs.getInt(1);

                System.out.println(a);

            }

            while (rs1.next()) {

                int b = rs1.getInt(1);

                System.out.println(b);

            }

        }

    }

});


查看完整回答
反對 回復 2021-09-15
  • 2 回答
  • 0 關注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號