`

java 调用oracle数据库返回的结果集

阅读更多

   例子表结构:

-- Create table
create table YONGHU
(
  USERID NUMBER not null,
  NAME   VARCHAR2(20) not null,
  AGE    VARCHAR2(20) not null
)
tablespace TEST
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table YONGHU
  add constraint PK_TEST_ID primary key (USERID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

   jvav调用oracle返回的数据集我想到的有三种实现方式:调用sql语句、调用视图、存储过程这里主要说明存储过程调用。

    由于在定义Oracle存储过程时无法直接指定参数的数据类型为:ref cursor,而是首先通过以下方法将ref cursor进行了重定义:

  1、定义包,在包中定义数据类型:FuxjResultSet(ref cursor类型)

 

--定义FuxjPackage包,定义ref cursor类型
create or replace package FuxjPackage is
  type FuxjResultSet is ref cursor;
end FuxjPackage;

  2、定义存储过程使用:FuxjResultSet类型的数据作为输出参数返回数据集

--存储过程使用ref cursor类型的变量返回数据集
create or replace procedure getemps(p_cursor out FuxjPackage.FuxjResultSet,
                                    userName in varchar2) as
begin
  open p_cursor for
    select * from yonghu where name = userName;
end;

 3、oracle自己调用

 

declare
  userId  number;
  name    varchar2(20);
  age     varchar2(20);
  rownum_ integer;
  c       FuxjPackage.FuxjResultSet;
begin
  name := '熊敏';
  getemps(c, name); --orecle调用时输出参数将定义的和输出参数一样类型的数据放入参数位置即可
  loop
    FETCH c INTO userId, name,age;
    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(userId || '===' || name || '====' || age || '==');
  END LOOP;
  CLOSE c;
end;

 

 4、java代码调用

package dao;

import java.sql.*;
import java.sql.Connection;
import oracle.jdbc.driver.*; //该包位于  ojdbc14.jar 中

public class Proc {
	public static void main(String[] args) {
		try {
			String driver_class = "oracle.jdbc.driver.OracleDriver";
			String connect_string = "jdbc:oracle:thin:@127.0.0.1:1521:min"; /*要变动的是数据库服务器的地址以及数据库名称"psmis"*/
			String query = "call getemps(?,'熊敏')"; //调用存储过程的语法,输出参数用”?“表示
			Connection conn;
			Class.forName(driver_class);
			conn = DriverManager.getConnection(connect_string, "test", "test"); //链接、用户名、密码
			CallableStatement cstmt = conn.prepareCall(query); //CallableStatement 为调用存储过程的特有类
			cstmt.registerOutParameter(1, OracleTypes.CURSOR); //注册存储过程的输出参数为游标类型--即resultSet类型
			cstmt.execute(); //执行存储过程
			ResultSet rset = (ResultSet) cstmt.getObject(1); //获取数据集合
			while (rset.next())
				System.out.println(rset.getString(1) + rset.getString(2)
						+ rset.getString(3));
			cstmt.close();
		} catch (Exception a) {
			a.printStackTrace();
		}
	}
}

 

  说明:需要导入ojdbc14.jar、classes12.jar

   (路劲oracle安装目录D:\oracle\product\10.2.0\db_1\install\patches\5923165\files\jdbc\lib)

分享到:
评论

相关推荐

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    Java连接Oracle数据库的各种方法

    在Java中集成Oracle数据库,不仅可以从Java调用数据库操作,还可以在SQL和PL/SQL中调用Java代码。Oracle提供了扩展的DDL语句,允许在数据库中创建和管理Java程序,将Java命名空间映射到数据库模式,使得访问和调用...

    Java连接oracle数据库实现成绩查询

    在本课程设计中,我们利用Java编程语言与Oracle数据库相结合,构建了一个功能完善的学生成绩管理系统。这个系统针对管理员、教师和学生三个角色,提供了不同的权限和操作功能,旨在实现成绩的有效管理和查询。 首先...

    java实现oracle数据库备份.pdf

    - **后端**:利用Java调用Oracle的导出工具`exp`完成数据备份。 2. **备份流程设计**: - 用户通过JSP页面输入数据库用户名、密码、网络连接名以及备份文件名等信息。 - 提交表单后,Java后端处理这些信息,并...

    java调用oracle存储过程或者函数

    在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...

    JAVA 连接oracle数据库 实现简单的查询

    在Java编程中,连接Oracle数据库并执行...总的来说,Java连接Oracle数据库并进行查询涉及到JDBC API的使用,包括加载驱动、建立连接、执行SQL和处理结果。理解这些步骤和概念对于任何Java开发者来说都是基础且重要的。

    Java连接Oracle数据库的各种方法.doc

    在Java编程中,连接Oracle数据库是常见的任务,Oracle提供了多种方式来实现这一目标。本文主要探讨的是Java连接Oracle数据库的方法,包括JDBC和SQLJ,以及Oracle JDBC驱动的三种类型。 首先,Java与Oracle的接口...

    java连接oracle数据库实例及所需jar文件

    在Java编程中,连接Oracle数据库是一项常见的任务,特别是在开发企业级应用时。Oracle数据库是世界上最流行的关系型数据库管理系统之一,而Java作为一种多平台支持的编程语言,为与Oracle的交互提供了丰富的工具和库...

    java代码oracle数据库批量插入

    ### Java代码实现Oracle数据库批量插入的关键知识点 #### 1. JDBC连接配置 - **JDBC URL**: `jdbc:oracle:thin:@IP:1521:orcl`,这里的URL指定了连接到Oracle数据库的方式。其中`@IP:1521:orcl`中的IP是指数据库...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    Java调用oracle函数返回oracle类(类似)集合

    3. **Java调用Oracle函数**: 在Java中,你需要使用Oracle的JDBC驱动(ojdbc.jar和nls_charset12.jar)来与Oracle数据库交互。首先,你需要加载Oracle驱动并建立数据库连接。然后,你可以通过`CallableStatement`来...

    Java连接Oracle数据库驱动包(JDBC)

    Java连接Oracle数据库的过程中,JDBC(Java Database Connectivity)扮演了至关重要的角色。JDBC是Java平台的一个标准API,它允许Java程序与各种数据库进行交互,包括Oracle。在本压缩包中,提供了Java连接Oracle...

    java调用aoracle数据库

    java调用aoracle数据库

    Java调用Oracle的过程和函数

    ### Java调用Oracle的过程和函数 在现代软件开发过程中,Java与Oracle数据库的结合非常常见。为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来...

    java调用oracle存储过程返回结果集,Record,cursor.[参考].pdf

    在Java编程中,调用Oracle数据库的存储过程并获取返回的结果集是一项常见的任务。这个例子展示了如何处理返回Record类型和Cursor类型的存储过程。Record类型在Oracle中是一种自定义的数据结构,可以用来模拟类似...

    java调用oracle存储过程实现增删改查

    在Java编程中,调用Oracle数据库的存储过程是常见的数据操作任务,特别是在处理复杂的业务逻辑或需要高效批量处理数据时。存储过程是预编译的SQL语句集合,可以提高性能,减少网络流量,并增强安全性。本文将详细...

    java编程访问oracle数据库

    Java编程访问Oracle数据库是软件开发中的常见任务,它涉及到Java的JDBC(Java Database Connectivity)技术,Oracle数据库的使用以及数据库连接管理等多个方面。在这个场景中,`testODBC`可能是一个包含Java源代码...

    用Java编写Oracle数据库存储过程

    在实际开发中,你可能还需要处理异常、参数传递、结果集返回等问题。Oracle提供了一系列的API和包,如`DBMS_JAVA`,来帮助管理和优化Java在数据库中的使用。同时,了解Oracle的内存管理和JVM的配置也是确保Java存储...

Global site tag (gtag.js) - Google Analytics