`

Orcale创建分页存储过程

阅读更多

create or replace package mypage
as
 type page_cursor is ref cursor;
 procedure get(page_col varchar2,  --要查询的列
   page_table varchar2, --表名(可有多张)
   page_where varchar2,--条件
   page_order varchar2, --排序
   page_size number, --一页显示的条数
   page_currpage number, --当前第几条
   page_count out number, --返回总条数
   page_result out page_cursor); -- 返回结果集
end mypage;
/


create or replace package body mypage
as
procedure get(page_col varchar2,
   page_table varchar2,
   page_where varchar2,
   page_order varchar2,
   page_size number,
   page_currpage number,
   page_count out number,
   page_result out page_cursor)
is
   t_sql varchar2(1000);
   t_result varchar2(1000);
   t_count number;
begin
if page_col is not null then
   t_result := 'select '|| page_col || ' from ' || page_table ;
else
   t_result := 'select * from ' || page_table ;
end if;
   t_sql := 'select count(*) from ' || page_table || ' where 1=1 '|| page_where;
   execute immediate t_sql into t_count;
   page_count := t_count;
   t_result := t_result ||' where rownum between '|| (page_currpage-1) * page_size|| ' and '|| page_currpage * page_size || page_where || page_order ;
   open page_result for t_result;
end get;
end mypage;
/

 

========================调用处=============================

创建连接对象 

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    String url = "jdbc:oracle:thin:@localhost:1521:Test"; //Test为你的数据库的SID
    String user = "cowry";
    String password = "cowry";
    Connection conn = DriverManager.getConnection(url, user, password);

调用
  CallableStatement proc = conn.prepareCall("{ call mypage.get(?,?,?,?,?,?,?,?)}");
  proc.setString(1, "*"); //要查询的列
  proc.setString(2, "resume, RecruitMessage"); //要查询的表名
  proc.setString(3, where.toString());                //where条件
  proc.setString(4, "order by resume.id desc");      //排序语句
  proc.setInt(5, 10);           // 每显示多少条
  proc.setInt(6, currPage);          //当前第几页
  proc.registerOutParameter(7, OracleTypes.NUMBER);  // 总条数

  proc.registerOutParameter(8, OracleTypes.CURSOR);  // 查询结果集
  proc.execute();
  int r = ((OracleCallableStatement) proc).getInt(7); //显示的总条数
  ResultSet set = ((OracleCallableStatement) proc).getCursor(8);

  while(set.next){

    .....

  }

分享到:
评论

相关推荐

    Oracle 分页存储过程

    一个高效的分页存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_condition VARCHAR2, p_page_num NUMBER, p_records_per_page NUMBER, result OUT SYS_REFCURSOR ) AS v_...

    Oracle 分页的存储过程

    首先,我们来看创建分页存储过程的基本步骤: 1. 创建包规范(Package Specification): 包规范定义了存储过程的接口,包括输入参数、输出参数和返回类型。在示例中,`package_page` 包定义了一个名为 `proc_page...

    Oracle 高效分页存储过程(修改)

    本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页查询。分页查询是数据库中的一种查询策略,它将结果集分为多个部分,每次只返回一部分(一页)结果给用户。这通常涉及到两...

    Oracle自定义数据分页存储过程

    本文将详细介绍如何在Oracle中创建一个自定义的数据分页存储过程,并给出C#代码的使用示例。 首先,我们创建一个名为`pkg_Pager`的存储过程包,它通常包括两个过程:一个用于计算总记录数,另一个用于获取指定范围...

    oracle分页查询并返回总记录数据存储过程

    本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在数据库中的可编程对象,可以接受参数、执行操作、返回结果。 2. **分页**:通过限制查询...

    oracle分页存储过程

    1. 创建分页存储过程的基础结构:一个典型的分页存储过程会接受两个参数,一个是当前页数,另一个是每页的记录数。例如: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_page_num IN NUMBER, p_page_...

    oracle包用存储过程图分页

    根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    Oracle存储过程分页

    ### Oracle存储过程分页知识点详解 #### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行...

    oracle 增加,删除,修改和分页存储过程

    在这个“Oracle增加、删除、修改和分页存储过程”项目中,我们将深入探讨这四个核心的数据库管理功能,并了解如何在PL/SQL环境中实现它们。 1. **增加(Insertion)**: 在Oracle中,创建一个用于插入数据的存储...

    Oracle分页存储过程

    本篇将详细讲解Oracle中的分页存储过程及其重要性。 在Oracle数据库中,分页通常涉及到`ROWNUM`伪列或`RANK()`、`DENSE_RANK()`、`ROW_NUMBER()`等窗口函数。`ROWNUM`用于限制返回的结果集数量,而窗口函数则在结果...

    oracle 分页存储过程

    本篇文章将深入探讨Oracle中的分页存储过程,以及如何利用源码和工具来实现这一功能。 在Oracle数据库中,进行分页查询通常涉及到ROWNUM伪列和子查询。ROWNUM是在数据检索时由Oracle自动生成的一个整数值,表示行的...

    java Oracle存储过程分页整理

    本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...

    Oracle All 添加 修改 更新 Oracle分页 emp表 存储过程实现

    在这个场景中,我们将深入探讨如何在Oracle中针对emp表实现分页查询的存储过程。 首先,让我们了解什么是分页查询。在大数据量的表格中,一次性加载所有数据可能会对系统性能造成压力,因此通常我们会采用分页的...

    Oracle分页+.cs代码+存储过程+Aspnetpager分页控件

    本资源包含Oracle分页的`.cs`代码、存储过程以及Aspnetpager分页控件的使用示例,旨在帮助开发者理解和应用这些技术。 首先,我们来探讨Oracle中的分页查询。Oracle数据库支持多种分页方法,其中一种是通过ROWNUM伪...

    sql oracle bootstrap海量存储过程jquery分页

    描述中提到的资源包括异步海量数据分页存储过程,这表明在后端,开发者使用了异步技术来处理大量数据的分页请求,以避免阻塞主线程,提高系统的响应速度。同时,源码可以直接应用于项目中,这对于开发者来说是一个...

    SQL Server 存储过程及Oracle SQL语句分页

    首先,我们来看看SQL Server中的分页存储过程。这里展示的是一个名为`usp_GetPageData`的存储过程,用于获取分页数据。这个存储过程接收三个参数:`@pageSize`(每页记录数),`@pageIndex`(当前页数),以及`@...

    通用ORACLE存储过程实现分页和查询

    创建一个通用的分页存储过程,我们需要考虑以下参数: 1. 输入查询(通常作为字符串参数传递):这是用户要执行的查询,不包含分页条件。 2. 开始行号(start_row):指定要开始显示的行号,通常从1开始。 3. 行数...

    oracle存储过程通用分页

    在提供的"stu.sql"文件中,可能包含了具体的分页存储过程实现或者示例数据。通过分析和运行这个脚本,你可以更好地理解如何在Oracle环境中实现存储过程的分页功能,并将其应用于实际项目中。 总之,Oracle存储过程...

Global site tag (gtag.js) - Google Analytics