java调用oracle带有返回值的存储过程
1.首先在数据库中必须要有存储过程,那么创建存储过程:
【案例】编写一个存储过程,输入雇员的编号,返回该雇员的姓名
create or replace procedure pro1(v_in_empno in number,v_out_ename out varchar2)
--注意:v_out_ename out varchar2表示v_out_ename是输出变量,
--out是关键字 varchar2是输出变量的类型
is
begin
select ename into v_out_ename from emp where empno=v_in_empno;
end;
在java代码中,调用该存储过程,代码如下:
Connection conn = null;
CallableStatement cs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");
cs = conn.prepareCall("{call pro1(?,?)}");
//给存储过程中的输入参数赋值
cs.setString(1, "7839");
//存储过程中的输出参数处理方式
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
cs.execute();
//取出存储过程的返回值
String name = cs.getString(2);
System.out.println(name);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
【注意事项:】
1.对于存储过程的输入参数,使用setXXX;对于输出参数,使用registerOutParameter
,问号的顺序要对应,同时需要考虑类型。
2.取出存储过程返回值的方法是CallableStatement提供的getXX()注意输出参数的位置,
同时也需要考虑输出参数的类型。