例子表结构:
-- 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调用aoracle数据库
java链接oracle数据库生成xml文件,通过dom4j-1.6.1.jar为核心的方法,链接oracle数据库,在规定的目录下生成xml文件。xml文件带规定格式。
使用Java操作oracle数据库 调用存储过程
import java.sql.*; public class Bc { // 声明数据库地址及驱动 private Connection conn = null; private String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; private String driver = "oracle.jdbc....
java连接Oracle数据库jar文件(调用其中一个即可)
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
这是Oracle数据库连接封装类,许多刚学习数据库的人不知道怎么使用Java连接Oracle数据库,这里我给出封装类,大家可以直接调用。
本文讲述如何在Oracle通过任务和管道的应用,异步调用存储过程的方法。并且介绍了其基本原理和具体实现测试。
oracle触发器+存储过程+java socket 实现数据库监听,一旦数据库改变,返回消息调用java 方法
建立和分析java和oracle数据库交互的两种方法 第一种java使用jdbc_odbc桥连接方式连接数据库 jdbc的thin方式 压缩包内有两种方法的源代码和classes12.jar驱动。
使用java通过jdbc访问Oracle数据库,并完成简单的连接登录,增删改查等功能,适合初学者进行参考学习的小demo代码。
oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http
描述了如何对Oracle数据库进行设置,并给出了利用Oracle数据库调用编译完成的Java类的方法
NULL 博文链接:https://xide829.iteye.com/blog/667762
这阶段对oracle学习的总结oracle数据库知识\oracle数据库\用java调用oracle数据库知识\oracle数据库\用java调用oracle数据库知识\oracle数据库\用java调用oracle数据库知识\oracle数据库\用java调用oracle数据库知识...
对数据库进行增删改查的webservice动态配置工具,实现动态配置各类数据库操作服务,拥有权限控制,日志监控,动态配置各类服务,随时配置随时使用不用重启web容器,简单方便
NULL 博文链接:https://weishaoxiang.iteye.com/blog/1237809
用java写的一个oracle日志查看器源代码,调用oracle数据库的logminer过程。包含一个不错的日历选择面板