hibernate5 呼叫 oracle 儲存過程和函式
阿新 • • 發佈:2019-01-22
@Autowired private SessionFactory sessionFactory; //呼叫無返回值儲存過程 public void callProcNoResult(String name){ String sql="{call test_proc_no_result(?)}"; sessionFactory.getCurrentSession().createNativeQuery(sql).setParameter(1, name).executeUpdate(); } //呼叫有返回值儲存過程 public Object callProcHasResult(String name) throws SQLException{ ProcedureCall call=sessionFactory.getCurrentSession().createStoredProcedureCall("test_proc_has_result"); //註冊輸入引數和輸出引數,可以使用引數下標或者引數名稱 call.registerParameter(1, String.class, ParameterMode.IN).bindValue(name); call.registerParameter(2, String.class, ParameterMode.OUT); return call.getOutputs().getOutputParameterValue(2); } //呼叫函式 public Object callFunction(String name){ String sql="select test_func(?) from dual"; return sessionFactory.getCurrentSession().createNativeQuery(sql).setParameter(1, name).uniqueResult(); }