Java调用存储过程二(返回一行或多行结果集)

本文介绍如何在Oracle数据库中创建一个包来获取特定ID的员工信息,并通过Java调用该包实现数据检索。首先定义包结构及过程,接着实现包体逻辑,最后展示Java代码如何执行存储过程并处理返回的游标结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
为了要得到结果集,需要使用游标进行遍历。因此要使用数据库中的包。

现在要根据一个编号得到一行结果集记录。

1.建立一个包:

create or replace package emp_pkg is
Type retcursor is ref cursor;
procedure pro_read(p_id in emp.empno%type,outcursor out retcursor);
end emp_pkg;

2.建立一个包体。
create or replace package body emp_pkg is
  procedure pro_read(p_id in emp.empno%type,outcursor out retcursor)
   is 
   begin 
      open outcursor for select * from emp where empno=p_id;
   end;
end emp_pkg;

3.Java调用包:
public  void getCallableStatement4(){
		CallableStatement cs=null;
		Connection conn=this.getConnection();
		String sql="{call emp_pkg.pro_read(?,?)}";
		try {
			cs=conn.prepareCall(sql);
			cs.setInt(1, 7788);
			cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
			cs.executeUpdate();
			ResultSet rs=(ResultSet) cs.getObject(2);
			while(rs.next()){
				System.out.println("编号:"+rs.getInt(1)+"  姓名:"+rs.getString(2));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值