千家信息网

JDBC存储过程在Oracle中如何获取结果集

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关JDBC存储过程在Oracle中如何获取结果集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 关于Oracle和结果集其实在大多数情况下,我们
千家信息网最后更新 2026年11月02日JDBC存储过程在Oracle中如何获取结果集

这篇文章给大家分享的是有关JDBC存储过程在Oracle中如何获取结果集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1. 关于Oracle和结果集

其实在大多数情况下,我们并不需要从Oracle中的JDBC存储过程里返回一个或多个结果集,除非迫不得已。如果大家用过MS SQL Server或Sybase SQL Server,那么从存储过程返回一个动态的结果集是一件非常容易的事情,只要在存储过程结束时写上

"select column1,column2,.... from table_list where condition"

就可以了。

但在Oracle中不能这样做. 我们必须使用Oracle Cursor.在Oracle PL/SQL中,Cursor用来返回一行或多行记录,借助Cursor,我们可以从结果集中取得所有记录.

Cursor并不难,但是要从Oracle中JDBC存储过程中返回结果集, 就需要用到Cursor变量,Cursor变量Oracle PL/SQL的类型是REF CURSOR, 我们只要定义了REF CURSOR 类型就可以使用Cursor变量. 比如我们可以这样定义:
TYPE ref_cursor IS REF CURSOR;

了解了Cursor以及Cursor变量,下面就介绍如何使用Cursor变量给JDBC返回结果集.

2. 定义表结构

在以下例子里,我们要用到一张表Hotline.

Create table hotline(country varchar2(50),pno varchar2(50));

3. 定义存储过程

  1. create or replace package PKG_HOTLINE istype HotlineCursorType is REF CURSOR;

  2. function getHotline return HotlineCursorType;

  3. end;

  4. create or replace package body PKG_HOTLINE isfunction getHotline return HotlineCursorType
    ishotlineCursor HotlineCursorType;

  5. beginopen hotlineCursor for select * from hotline;

  6. return hotlineCursor;

  7. end;

  8. end;

在这个存储过程里,我们定义了HotlineCursorType 类型,并且在存储过程中简单地查找所有的记录并返回HotlineCursorType.

4. 测试JDBC存储过程

在Oracle SQL/Plus里登陆到数据库. 按以下输入就看到返回的结果集.

SQL> var rs refcursor;SQL> exec :rs := PKG_HOTLINE.getHotline;SQL> print rs;

5. Java调用

简单地写一个Java Class.

….public void openCursor(){Connection conn = null;ResultSet rs = null;   CallableStatement stmt = null;   String sql = "{? = call PKG_HOTLINE.getHotline()}";   try{conn = getConnection();stmt = conn.prepareCall(sql);   stmt.registerOutParameter(1,OracleTypes.CURSOR);   stmt.execute();   rs = ((OracleCallableStatement)stmt).getCursor(1);   while(rs.next()){String country = rs.getString(1);   String pno = rs.getString(2);   System.out.println("country:" country "|pno:" pno);   }}catch(Exception ex){ex.printStackTrace();   }finally{closeConnection(conn,rs,stmt);   }}…..

这样就完成了JDBC存储过程对Oracle结果集的调用。

感谢各位的阅读!关于"JDBC存储过程在Oracle中如何获取结果集"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

过程 存储 结果 变量 类型 内容 更多 篇文章 不错 实用 迫不得已 一行 事情 例子 动态 多个 家用 情况 数据 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 百单网互联网科技有限公司 科技创新与互联网经济 港股互联网科技股 互联网科技媒体 齐家互联网科技有限公司 左右互联网络科技 中国互联网金融科技基金 金融科技和互联网金融 成都仁贤领冠互联网科技有限公司 济南和联互联网科技有限公司 互联网科技产品 金融科技与互联网金融相同和不同 赶超互联网科技 微信多开 坤平互联网科技 中国互联网十大科技股排名 智帮互联网科技公司最近动向 互联网科技快讯热点 科技美学互联网 艺术 互联网 科技节活动 微视频大赛 上海睿民互联网科技有限公司 互联网科技会 科技信息互联网 互联网 科技创业 朱啸虎曾投资哪些互联网科技企业 为客找房互联网科技公司怎么样 科技互联网海报 萌小萌互联网科技河南有限公司 互联网公司属于科技吗 武汉亿视互联网科技有限公司
0