编写存储过程返回的结果集在游标中使用java代码调用
2011-07-31 21:02
1016 查看
=========说明该案例使用的表是oracle数据库自带的emp表==========
--1、创建一个包
--包名是testpackage,
--包中定义了一种类型test_cursor,该类型是游标类型
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--2、建存储过程。
create or replace procedure sp_pro10
(spNo in number,p_cursor out testpackage.test_cursor) is
begin
open p_cursor for select * from emp where deptno=spNo;
end;
--3、在java代码中调用
package test;
import java.sql.*;
public class TestOracle{
//定义Connection对象
public static Connection conn = null;
//定义CallableStatement对象
public static CallableStatement cs = null;
//定义返回的结果集对象
public static ResultSet rs = null;
public static void main(String[] args){
try{
//1、加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、取得数据库连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
//3、实例化CallableStatement对象
cs = conn.prepareCall("{call sp_pro10(?,?)}");
//4、给?赋值
cs.setInt(1,10);
//5、给第二个?赋值
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
//7、执行
cs.execute();
//8、获取返回的值,注意返回值是第二个,此处必须写2
ResultSet rs = (ResultSet)cs.getObject(2);
//9、打印输出取得的值
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs = null;
}
}catch(Exception e0){
e0.printStackTrace();
}finally{
try{
if(cs!=null){
cs.close();
cs = null;
}
}catch(Exception e1){
e1.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn = null;
}
}catch(Exception e2){
e2.printStackTrace();
}
}
}
}
}
}
--1、创建一个包
--包名是testpackage,
--包中定义了一种类型test_cursor,该类型是游标类型
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--2、建存储过程。
create or replace procedure sp_pro10
(spNo in number,p_cursor out testpackage.test_cursor) is
begin
open p_cursor for select * from emp where deptno=spNo;
end;
--3、在java代码中调用
package test;
import java.sql.*;
public class TestOracle{
//定义Connection对象
public static Connection conn = null;
//定义CallableStatement对象
public static CallableStatement cs = null;
//定义返回的结果集对象
public static ResultSet rs = null;
public static void main(String[] args){
try{
//1、加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、取得数据库连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
//3、实例化CallableStatement对象
cs = conn.prepareCall("{call sp_pro10(?,?)}");
//4、给?赋值
cs.setInt(1,10);
//5、给第二个?赋值
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
//7、执行
cs.execute();
//8、获取返回的值,注意返回值是第二个,此处必须写2
ResultSet rs = (ResultSet)cs.getObject(2);
//9、打印输出取得的值
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs = null;
}
}catch(Exception e0){
e0.printStackTrace();
}finally{
try{
if(cs!=null){
cs.close();
cs = null;
}
}catch(Exception e1){
e1.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn = null;
}
}catch(Exception e2){
e2.printStackTrace();
}
}
}
}
}
}
相关文章推荐
- 编写存储过程,并且使用java代码调用存储过程的简单例子
- 编写存储过程并使用java代码调用
- 利用游标返回结果集的的例子(Oracle 存储过程)JAVA调用方法和.NET调用方法
- Oracle存储过程中执行查询返回的结果集,并使用java代码调用【转】
- Java 调用存储过程 返回结果集
- java调用oracle 存储过程 以及游标使用
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- java调用oracle返回结果集的存储过程
- 使用mabatis调用存储过程,返回结果集无法转化成对应的类
- java通过prepareCall调用oracle返回游标的存储过程
- java调用mysql存储过程返回多个结果集,与.net不同
- java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- java调用mysql存储过程返回多个结果集,与.net不同
- Java 调用 Oracle 存储过程返回结果集
- oracle创建存储过程并返回结果集(附C#调用代码)
- 存储过程使用游标变量返回结果集(推荐)
- java调用oracle过程返回结果集(包和游标)
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写