存储过程: Package Head: CREATE OR REPLACE PACKAGE TEST IS --返回cursor TYPE CURSOR_RESULT IS REF CURSOR; PROCEDURE GET_CURSOR_RESULT(P_STARTINDEX IN INT, P_LIMIT IN INT, P_DEAL_TYPE IN VARCHAR2, CR OUT CURSOR_RESULT); END TEST; Package Body: CREATE OR REPLACE PACKAGE BODY TEST IS PROCEDURE GET_CURSOR_RESULT(P_STARTINDEX IN INT, P_LIMIT IN INT, P_DEAL_TYPE IN VARCHAR2, CR OUT CURSOR_RESULT) IS BEGIN OPEN CR FOR SELECT T.* FROM (SELECT SDD.ID, SDD.FCU, SDD.FCD, ROWNUM RN FROM SDDTEST SDD WHERE DEAL_TYPE = P_DEAL_TYPE) T WHERE T.RN >= P_STARTINDEX AND T.RN < P_STARTINDEX + P_LIMIT; END GET_CURSOR_RESULT; END TEST;
Java代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private static String DB_CONNECT_STR = "jdbc:oracle:thin:@10.25.18.29:1593:test"; private static String DB_USER = "scott"; private static String DB_PASS = "tiger"; public static DBUtil dbUtil = new DBUtil(); private Connection con = null; private DBUtil() { try { // 推荐使用这个驱动,不推荐oracle.jdbc.driver.OracleDriver Class.forName("oracle.jdbc.OracleDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Connection getConnection() throws SQLException { if (con == null) con = DriverManager.getConnection(DB_CONNECT_STR,DB_USER,DB_PASS); return con; } } import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import oracle.jdbc.OracleCallableStatement; /** * 1.java中获取Oracle存储过程返回的Cursor。 * @author QCD * */ public class OracleCursorResultTest { /** * @param args */ public static void main(String[] args) { Connection con = null; OracleCallableStatement ocs = null; ResultSet rs = null; String sql = "{call test.GET_CURSOR_RESULT(?,?,?,?)}"; try { con = DBUtil.dbUtil.getConnection(); ocs = (OracleCallableStatement) con.prepareCall(sql); ocs.setInt(1, 10); ocs.setInt(2, 20); ocs.setString(3, "01"); ocs.registerOutParameter(4,oracle.jdbc.OracleTypes.CURSOR); ocs.execute(); rs = ocs.getCursor(4); while (rs.next()) { String tradeno = rs.getString("id"); String fcu = rs.getString("fcu"); Date fcd = rs.getDate("fcd"); System.out.println("tradeno:" + tradeno + ",fcu:" + fcu + ",fcd:" + fcd); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if(rs!=null)rs.close(); if(ocs!=null)ocs.close(); if(con!=null)con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } 注:使用ojdbc6.jar,此版本支持JDK6,支持JDBC 4.0。
相关推荐
本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括创建Type、PACKAGE和PROCEDURE,Java代码中调用存储过程,并获取结果集。这些知识点对深入了解Oracle存储过程和Java调用Oracle存储过程...
下面是使用 Spring jdbcTemplate 调用 Oracle 存储过程返回 List 集合的 Java 代码: ```java package com.zc.test; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql....
java调用oracle存储过程返回结果集,Record,cursor.[参考].pdf
在 Oracle9i 之前,不可能从 Java 存储过程直接返回一个 ResultSet,因为没有定义表单 ResultSet->REF CURSOR 的映射。Oracle9i 增加了此映射,允许从函数返回 ResultSet 或将其作为 OUT 参数传到某个过程。但它仍不...
内有三个文件 TESTPACKAGE.txt和CURSOR_TEST2.txt中为oracle建存储过程语句,OracleProcedure.java为java操作存储过程的程序
Oracle技术_5分钟会用存储过程_存储过程简单实例 包括建表及初始化数据,直接运行就可以用 包含循环、条件、增改查、参数传入、变量赋值、java调用等 http://blog.csdn.net/ooppookid/article/details/41206963
这种错误通常是由于开发者在编写插入语句时,忘记了某个主键的唯一值,导致 Oracle 无法将重复的值存储到数据库中。解决这个错误的方法是,检查插入语句中的主键是否唯一,确保主键不重复。 ORA-01001: INVALID_...
这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...
Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现...
异常处理机制、存储函数/存储过程、触发器。 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: set serveroutput on 结构: declare...
4)、创建一个函数,以客户号为参数,返回该客户可以获得的礼品名称。 5)、创建一个函数,以图书号为参数,统计该图书被订购的总数量。 湖南文理学院实验报告 课程名称 大型数据库技术 实验名称 五、PL/SQL触发器 ...
oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2...
* java_pool_size:以字节为单位,指定 Java 存储池大小,它用于存储 Java 的方法和类定义在共享内存中的表示方法以及调用结束时移植到 Java 会话空间的 Java 对象。 高级参数(续): * large_pool_size:指定...
* 使数据库对象定义的转换自动化,这些对象包括存储过程、触发器、包、表、视图、索引和序列 * 使用有用的与 SQL 和 Java 兼容的函数,这些函数使转换在功能上是精确和一致的 * 使用 SQL 转换器工具来实时地执行查询...
说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。...
因为 Redis 的数据是存储在内存中的,而 Oracle、Mysql 的数据是存储在磁盘中的。 * Redis 适合存储频繁使用的热数据,因为它可以提供快速的读写速度。 * 使用 Redis 实现多对多关联,可以通过两个 set 来实现。 四...
Toad 使用快速入门 目录 一.Toad功能综述 二....三....四....1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的... 要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug...
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/SQL: 存储在数据库内运行, 其他方法为在数据库外对数据库访问,只适合ORACLE; 2. PL/SQL 1) PL/SQL(Procedual language/SQL)...