java调用oracle 存储过程 返回集合
sys_refcursor是oracle9i以后系统定义的一个refcursor,主要作用是用于存储过程返回结果集。
1、pl/sql 存储过程
CREATE OR REPLACE PROCEDURE retCursor(ret_cursor OUT SYS_REFCURSOR) IS ret_cursor_value SYS_REFCURSOR; BEGIN OPEN ret_cursor_value FOR SELECT * FROM emp; ret_cursor := ret_cursor_value; END retCursor;
2、java处理方法
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import oracle.jdbc.driver.OracleCallableStatement; import oracle.jdbc.driver.OracleTypes; public class CommonJDBC { public static ResultSet callProcedure(){ ResultSet rs = null; Connection conn = DB.getConnection(); try { CallableStatement cs = conn.prepareCall("{call retCursor(?)}"); cs.registerOutParameter(1, OracleTypes.CURSOR); cs.execute(); rs = ((OracleCallableStatement)cs).getCursor(1); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } return rs; } }
3、测试
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; public class TestCommonJDBC { @Test public void callProcedure(){ ResultSet rs = CommonJDBC.callProcedure(); try { int count = 0; while (null!=rs && rs.next()){ String empId = rs.getString(1); String empName = rs.getString(2); System.out.println(empId+"\t"+empName); count++; } System.out.println("count="+count); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally { Connection conn = DB.getConnection(); if (null != conn){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != rs){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
4、输出结果
7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER
相关推荐
Java调用带参数的Oracle 存储过程并返回集合,
Spring jdbcTemplate调用Oracle存储过程返回List集合
Java调用Oracle存储过程的方法
Java调用oracle函数返回oracle类(类似)集合
java调用Oracle存储过程的简单源码示例, 包括无返回参数,返回单个参数和返回参数集合三种调用情况!
基本查询 过滤和排序 单行函数 组函数 多表查询 子查询 集合运算 创建和管理表 光标 例外 Java调用存储过程和存储函数 触发器
Oracle集合类型输出参数的PLSQL存储过程及其Java调用.docxOracle集合类型输出参数的PLSQL存储过程及其Java调用.docx
Oracle集合类型输出参数的PLSQL存储过程及其Java调用
能够使用Oracle 11g的基本条件 在Windows 2003上安装Oracle 11g 移除Oracle 11g 第3章-熟悉数据库 什么是数据库 范式,设计关系型数据库的准则 绘制E-R图设计数据库 第4章-SQL基础 SQL-数据库沟通的语言...
SODA允许您在Oracle数据库中创建和存储此类文档集合,并执行在这些文档上创建,检索,更新和删除(CRUD)操作,而无需了解结构化查询语言(SQL)或JDBC或数据如何存储在数据库中。 本质上,SODA在Oracle数据库之上...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...
1.FORALL 用法小结 2.如何使用批挷定提高性能 3.FORALL 如何影响回滚 4.用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ,用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ...9.给Oracle存储过程传入数组(这是自己的)
│ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...
Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...