簡體   English   中英

使用返回參數從Hibernate中調用oracle中的pl / sql過程

[英]call pl/sql procedure in oracle from Hibernate with a return parameter

我有一個PL / SQL函數,該函數返回兩個參數:req_type和req_seq。

這是PL / SQL的代碼。

declare
    req_type number;
    req_seq  number;

    TEST_PKG.insert_req(001,req_type,req_seq );
    dbms_output.put_line('req_type='||req_type);
    dbms_output.put_line('req_seq='||req_seq);
end;

我需要從休眠中調用此函數。

我沒有找到從休眠狀態進行這項工作的確切方法

我試過使用此代碼:

public EmpEntity insertReq(String numEmp) {
    String query = " call TEST_PKG.insert_req(" + numEmp + ",req_type,req_seq ) " ;

    SQLQuery sqlQuery = this.getSession().createSQLQuery(query);
    sqlQuery.executeUpdate();

    sqlQuery.setResultTransformer(Transformers.aliasToBean(
            EmpEntity.class));

    List<EmpEntity> list = sqlQuery.list();

    EmpEntity empEntity=list.get(0);
    empEntity.setRequestType(.....);
    empEntity.setRequestSec(....);

    return empEntity;
}

您可以嘗試以下方法。 在這里,我們在執行之前設置參數。

StoredProcedureQuery query = entityManager
        .createStoredProcedureQuery("proc_name")
        .registerStoredProcedureParameter(1, Long.class, 
            ParameterMode.IN)
        .registerStoredProcedureParameter(2, Long.class, 
            ParameterMode.OUT);

    query.execute();

    Long res = (Long) query.getOutputParameterValue(2);

您可以替換您可以在這里找到StoredProcedureQuery的文檔https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/StoredProcedureQuery.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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