`
xphwv
  • 浏览: 45678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle游标(返回多条数据)分页

 
阅读更多

create or replace package test_mypackage1 as
--声明类型,并引用游标
type cursorType is  ref cursor;
  --声明存储过程,两个输入参数,一个输出参数,输出游标类型数据
  procedure prcGetGlobalAddress(pos1 integer,
                                --分页查询的下限
                                pos2 integer,
                                --分页查询的上限
                                cur in out test_mypackage1.cursorType
                                --输出参数,数据类型为引用游标的类型
                                );
end test_mypackage1;

create or replace package body test_mypackage1 as
--定义存储过程
       procedure prcGetGlobalAddress(pos1 integer, pos2 integer, cur in out test_mypackage1.cursorType) as
       begin
--返回得到分页查询结果集的游标句柄
       open cur for select * from(select a.*, rownum rn from(select * from mes_appointment_machine) a where rownum <= pos2) where rn > = pos1;
       end prcGetGlobalAddress;
end test_mypackage1;

// 调用oracle的存储过程 ---> 查询数据得到游标
 public static void invokeProcedureResutl() {
  Connection conn = null;
  CallableStatement callableStatement = null;
  try {
   conn = DBUtils.getConnection();
   // 第一步:获得CallableStatemen的实例;
   callableStatement = conn
     .prepareCall("{call test_mypackage1.prcGetGlobalAddress(?,?,?)}");

   // 第二步:为输出参数注册数据类型,为输入参数赋值;
   callableStatement.registerOutParameter(3,
     oracle.jdbc.driver.OracleTypes.CURSOR);

   callableStatement.setInt(1, 1);
   callableStatement.setInt(2, 50);
   // 第三步:执行存贮过程和获得返回值
   callableStatement.execute();
   ResultSet result = (ResultSet) callableStatement.getObject(3);
   if (result != null) {
    while (result.next()) {
     System.out.println(result.getString(1) + "---"
       + result.getString(2) + "---" + result.getString(3)
       + "---" + result.getString(4) + "---"
       + result.getString(5) + "---" + result.getString(6)
       + "---" + result.getString(7) + "---"
       + result.getString(8));
    }
   }
   // System.out.println(result);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 

分享到:
评论

相关推荐

    ssh+oracle分页

    前端与后端通过AJAX通信,获取分页数据,动态更新页面。 7. **性能优化**:在处理大量数据时,合理的分页策略和优化至关重要。避免全表扫描,考虑使用索引,限制查询的数据量,以及缓存策略等都是提高分页性能的...

    java oracle数据库过程实现jsp分页

    在Oracle数据库中,我们可以创建一个包含分页逻辑的存储过程,接收两个参数:页数`P`和每页大小`N`,并返回所需的数据。 以下是一个简单的Oracle存储过程示例: ```sql CREATE OR REPLACE PACKAGE page_pkg AS ...

    sturts+oracle+jdbc实现分页

    在这个案例中,`FenYe.java`可能是一个Action类,负责处理用户的请求,并与数据库交互获取分页数据。 `Page.java`可能代表一个分页模型类,它通常包含当前页数、每页显示条数、总页数、总记录数等属性,以及用于...

    VC查询Oracle数据(包括存储过程、分页查询)

    8. **事务处理(Transactions)**:在对数据库进行多条操作时,事务处理确保数据的一致性。VC++可以通过ADO的Connection对象的BeginTrans、CommitTrans和RollbackTrans方法来控制事务。 9. **错误处理**:在进行...

    ORACLE学习资料大全(存过,索引,函数,优化,分页,联表,游标,基础sql)

    Oracle提供了多种类型的游标,如隐式游标、显式游标和静态游标,它们允许程序按需读取和处理单条记录。 最后,“基础SQL语法”是所有Oracle学习的起点。这包括数据的插入、更新、删除(INSERT、UPDATE、DELETE),...

    ORACLE-基于包的存储过程动态分页

    4. **执行查询**:使用ROWNUM和子查询的方法来获取当前页的数据,并通过游标返回结果。 #### 总结 通过上述存储过程,可以在Oracle环境中轻松实现动态分页查询,不仅提高了系统的灵活性和可扩展性,也极大地提升了...

    ASP百万数据分页类.zip

    - **游标(Cursor)**:虽然不常用,但在某些情况下,游标可以用来逐条处理数据,特别是在需要对每个分页数据进行复杂操作时。 - **ADO对象**:ASP中,通常会使用ActiveX Data Objects(ADO)来连接数据库,包括...

    分页Oracle.mysql

    同时,对于动态分页(如用户滚动时加载更多数据),要避免每次都执行完整的分页查询,可以使用游标或者前端缓存部分数据。 总的来说,Oracle和MySQL在分页上的实现方式虽然不同,但都能有效地处理大量数据的分批...

    Oracle通用分页存储过程

    Oracle数据库在处理大数据量时,分页查询是一个常见的需求,以提高数据检索的效率和用户体验。"Oracle通用分页存储过程"就是为了解决这个问题而设计的。分页存储过程通常包含一系列SQL语句和逻辑,用于从数据库中按...

    基于Oracle数据库的分页显示中SQL复杂查询结果集总行与数据正确性控制.pdf

    2. 分页多次查询数据库:该方式每次仅查询当前页面的数据,在翻页时重新连接并查询数据库以获得下一页数据。尽管每次翻页都需要查询及关闭数据库,但由于每次查询的数据量较小,内存占用也较小,因此查询速度较快。...

    oracle 分页包

    - **使用场景**:当需要同时获取总记录数和分页数据时使用此过程。 2. **`sp_Page(p_PageSize IN INT, p_PageNo IN INT, p_SqlSelect IN VARCHAR2, p_SqlCount IN VARCHAR2, p_OutRecordCount OUT INT, p_...

    ASP技术常遇问题解答-如何处理Oracle中较大的文本数据?.zip

    5. **事务管理**:对于涉及多条记录的操作,使用事务可以确保数据的一致性。通过设置Connection对象的TransactionLevel属性,然后使用BeginTrans、CommitTrans和RollbackTrans方法来控制事务。 6. **内存管理**:...

    (最好最优Oracle分页存储过程)UP_Sys_CommQuery_GetPageList

    在Oracle数据库中实现高效的数据分页是一项重要的任务。本文将深入解析一个名为`UP_Sys_CommQuery_GetPageList`的存储过程,该过程旨在为用户提供一种灵活且高效的分页查询方法。该存储过程主要通过接收用户输入的...

    pro*c 实现分页总结

    当用户请求分页数据时,通常会指定起始位置(n)和结束位置(m),比如每页显示20条记录,第一页请求第1到第20条,第二页请求第21到第40条,以此类推。在Pro*C中,我们可以使用游标来实现这一功能。 **解决方法1**...

    网页分页代码

    在Java后台开发中,分页通常涉及到数据库查询、数据处理和前端页面展示等多个环节。以下将详细介绍Java后台实现网页分页的相关知识点。 一、数据库查询 1. SQL分页查询:在MySQL中,可以使用LIMIT和OFFSET来实现...

    Oracle和跨页选择(新手)

    在Oracle中,进行数据查询时,我们经常需要对结果集进行分页展示,以方便用户逐页浏览大量数据。这就是所谓的“跨页选择”或分页查询。Oracle提供了多种方法来实现这个功能,其中最常见的是使用ROWNUM伪列和子查询。...

    百万级的分页存储过程

    例如,在Oracle 10g及更高版本中,当面对数百万甚至更多的记录时,使用游标能够有效地控制内存占用,并且避免一次性加载所有数据所带来的性能问题。 #### 性能优化建议 尽管此存储过程已经相当高效,但在实际部署...

    Hibernate中的query 分页.doc

    很多驱动程序会一次性加载所有结果到内存,然后在内存中进行分页,这可能导致性能下降,特别是当处理大数据量时,甚至可能引发`OutofMemoryError`。少数驱动程序如jTDS,利用服务器端游标来避免这个问题,这在处理大...

    oracle高级sql

    10. 分页查询:Oracle SQL提供ROWNUM伪列,结合子查询或分析函数(如ROW_NUMBER)可以实现分页查询,有效地处理大量数据的显示。 11. 并行查询:Oracle允许将查询工作分解到多个并行进程上,以加速处理大型数据集。...

    Oracle从基础到熟练(太实用了)

    - Oracle分页技术实现高效的数据分页查询,提高用户体验。 Oracle是一个庞大而复杂的系统,学习和掌握Oracle需要时间与实践,但通过理解这些基础知识和概念,能为数据库管理、开发和优化打下坚实的基础。

Global site tag (gtag.js) - Google Analytics