如下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));