Java如何实现调用oracle带有返回值的存储过程

来源:互联网 发布:欧美经济数据 编辑:程序博客网 时间:2024/06/02 06:00

实现目标:在proTest表中查询出id=1的用户姓名

表代码块

create table protest(    id int primary key,    name varchar2(50),    email varchar2(200))insert into protest values(1,'random','');

存储过程代码块

--参数列表  in 代表输入  out 代表输出  后面则是参数类型create or replace procedure proc_select_protest_byid(in_id in int,out_name out varchar2)isbeginselect name into out_name from protest where id=in_id;end;

Java测试代码块

import 包省略public class Test{    @Test    public void proTest(){        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", "a");              cs = conn.prepareCall("{call proc_select_protest_byid(?,?)}");              //设置存储过程的输入参数              cs.setInt(1, 1);              //设置存储过程的输出参数的处理方式             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();              }          }      }}

console

random



注意事项
1.对于存储过程的输入参数,使用setXXX;对于输出参数,使用registerOutParameter,问号的顺序要对应,同时需要考虑类型。
2.取出存储过程返回值的方法是CallableStatement提供的getXX()注意输出参数的位置,同时也需要考虑输出参数的类型。



参考资料

        java调用oracle带有返回值的存储过程

阅读全文
1 0