创建带游标的存储过程 以及在JDBC中的调用


//先建立一个包

create or replace package pkg_emp
as
TYPE cur IS REF CURSOR;
//动态SQL语句 要用到ref游标
procedure up_emp(var_cur out cur);
end pkg_emp;

create or replace package body pkg_emp
as
procedure up_emp(var_cur out cur)
as
var_sql varchar2(100) := 'select * from emp';
begin
open var_cur for var_sql;
exception
when others then dbms_output.put_line('ERROR!');
end up_emp;

end pkg_emp;


//调用过程

package com.icss.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.jdbc.internal.OracleTypes;

public class ProcedureDao {

public void select() {

DbUtil db = new DbUtil();
try {
Connection conn = db.conn();
CallableStatement proc = conn
.prepareCall("{call pkg_emp.up_emp(?)}");
//带输出参数的
proc.registerOutParameter(1, OracleTypes.CURSOR);

proc.execute();
ResultSet rs = (ResultSet) proc.getObject(1);
while (rs.next()) {
System.out.println(rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
}
}

public static void main(String[] args) {
ProcedureDao dao = new ProcedureDao();
dao.select();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值