如下SQL代碼定義了一個名爲findCustomers的存儲過程,p_age爲輸入參數,p_count爲輸出參數:java
delimiter // create procedure findCustomers(in p_age integer,out p_count integer) begin select count(*) into p_count from CUSTOMERS where AGE>p_age; select name from CUSTOMERS; end //
JPA API中的StoredProcedureQuery接口可以調用存儲過程,而且還能設置輸入參數,以及讀取輸出參數:ide
StoredProcedureQuery query=entityManager .createStoredProcedureQuery("findCustomers"); //註冊參數 query.registerStoredProcedureParameter(1, Integer.class,ParameterMode.IN); query.registerStoredProcedureParameter(2, Integer.class,ParameterMode.OUT); int age=15; query.setParameter(1,age); //設置參數 List names=query.getResultList(); //調用存儲過程 for(Object name:names) //遍歷查詢結果 System.out.println((String)name); //讀取輸出參數 System.out.println("年齡大於"+age+"的客戶數目:" +(Integer)query.getOutputParameterValue(2));