java 调用 oracle 存储过程

oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数。有一个例子:
import java.sql.*;
import oracle.jdbc.driver.*;

...........................
try {
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
      Connection conn = DriverManager.getConnection(
          "jdbc:oracle:thin:@localhost:1521:orcl", "system", "password");
      CallableStatement st = conn.prepareCall(
          "{call getemps(?)}");
      st.registerOutParameter(1,OracleTypes.CURSOR);
      st.execute();
      ResultSet r = (ResultSet) st.getObject(1);

      while (r.next()) {
        //todo
      }
    }
    catch (SQLException ex) {
      ................
    }

create or replace package types
as
type cursorType is ref cursor;
end;
/

create or replace procedure getemps( p_cursor in out types.cursorType )
as
begin
open p_cursor for select ename, empno from emp order by ename;
end;
/
具体参数你自己修改一下应该可以运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值