以下SQL代码定义了一个名为findCustomers的存储过程,p_age为输入参数,p_count为输出参数:
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接口能够调用存储过程,并且还能设置输入参数,以及读取输出参数:
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));