1. 程式人生 > >hibernate5 呼叫 oracle 儲存過程和函式

hibernate5 呼叫 oracle 儲存過程和函式

@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();
}