`
华少少华
  • 浏览: 16661 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

存储过程 分页

阅读更多
CREATE OR REPLACE PACKAGE CURSPKG AS
 TYPE refCursorType IS REF CURSOR;
  procedure sp_Page(p_PageSize       int, --每页记录数
                    p_PageNo         int, --当前页码,从 1 开始
                    p_SqlSelect      varchar2, --查询语句,含排序部分
                    p_SqlCount       varchar2, --获取记录总数的查询语句
                    p_OutRecordCount out int, --返回总记录数
                    p_OutCursor      out refCursorType);
END;


create or replace package body CURSPKG is

  procedure sp_Page(p_PageSize       int, --每页记录数
                    p_PageNo         int, --当前页码,从 1 开始
                    p_SqlSelect      varchar2, --查询语句,含排序部分
                    p_SqlCount       varchar2, --获取记录总数的查询语句
                    p_OutRecordCount out int, --返回总记录数
                    p_OutCursor      out refCursorType) is
    v_sql       varchar2(3000);
    v_count     int;
    v_heiRownum int;
    v_lowRownum int;
  begin
  
    ----取记录总数
    execute immediate  p_SqlCount
      into v_count;
    p_OutRecordCount := v_count;
    ----执行分页查询
    v_heiRownum := p_PageNo * p_PageSize;
    v_lowRownum := v_heiRownum - p_PageSize + 1;
  
    v_sql := 'SELECT * FROM (SELECT A.*, rownum rn 
    FROM (' ||p_SqlSelect || ') A
    WHERE rownum <= ' || to_char(v_heiRownum) || ') B
    WHERE rn >= ' || to_char(v_lowRownum);
    --注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
  
    OPEN p_OutCursor FOR v_sql; 
  end sp_Page;

end;



sqlstr = "select ID,From_UserID,To_UserID,to_char(AddDate,'YYYY-MM-DD HH24:MM:SS') as AddDate,Content,IsRead,State,From_UserName,To_UserName,Title from VW_tData_Inquire";
sqlstrcount = "select count(*) from VW_tData_Inquire";
openDB();
			String sql = "{ call CURSPKG.sp_Page(?,?,?,?,?,?)}";
	        CallableStatement proc = conn.prepareCall(sql);
	        proc.setInt(1, p_PageSize);        		//每页数量
	        proc.setInt(2, p_PageNo);          		//页码
	        proc.setString(3, sqlstr);      		//取数据的sql
	        proc.setString(4, sqlstrcount);        	//取数据个数的sql
	        proc.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);      //输出数据行数
	        proc.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);      //输出游标记录集
	        proc.execute();
	        RowsCount = ( (OracleCallableStatement) proc).getInt(5);	//总行数
	        rs = (ResultSet)proc.getObject(6);	//结果集
[url]
分享到:
评论

相关推荐

    分页存储过程 分页存储过程 分页存储过程

    分页存储过程 分页存储过程 分页存储过程 sql代码

    ASP.NET 存储过程分页

    ASP.NET 存储过程分页是一种在Web应用中实现高效数据检索的技术,它结合了数据库存储过程和分页策略,以提高性能并减轻服务器负担。在这个主题中,我们将深入探讨如何在ASP.NET环境中利用存储过程来实现数据的分页...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    存储过程分页+分页控件

    本话题将深入探讨“存储过程分页”以及与之配合使用的“分页控件”,帮助你理解这两种技术的核心概念及其应用。 首先,我们来讨论“存储过程分页”。存储过程是预编译的SQL语句集合,它在数据库服务器上执行,可以...

    一个经典的储存过程分页代码

    ### 经典存储过程分页代码解析 #### 一、概述 在数据库操作中,分页查询是一项常用且重要的技术,特别是在数据量较大时,合理的分页能够显著提高查询效率和用户体验。本文将深入分析一个经典存储过程实现的分页...

    Oracle存储过程分页

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

    asp.net利用存储过程分页代码

    本文将详细介绍如何利用存储过程实现ASP.NET中的分页功能。 首先,我们需要理解存储过程的概念。存储过程是预编译的SQL语句集合,存储在数据库中,可以通过名称调用执行。它们可以提高性能,减少网络流量,并提供更...

    sql分页 sqlserver中存储过程分页

    #### 存储过程分页概述 存储过程是一种预先编译好的 SQL 代码块,存储在 SQL Server 数据库中。使用存储过程进行分页查询的好处包括:提高执行效率、增强代码复用性以及提供更好的安全性等。 #### 示例存储过程分析...

    SQL高效存储过程分页

    当我们谈论“SQL高效存储过程分页”时,我们主要关注如何利用存储过程来实现数据库查询的分页效果,这在大数据量的场景下尤为重要,因为直接查询所有数据可能会导致性能下降,甚至阻塞数据库服务。 分页是Web应用...

    asp.net(GridView)存储过程分页源码

    总结来说,实现ASP.NET的存储过程分页,需要结合后端代码和数据库存储过程,利用GridView控件的分页特性,以及适当的导航按钮和错误处理机制。这样,用户可以方便地浏览和导航大量数据,同时减轻服务器负担,提升...

    利用存储过程分页的示例

    ### 利用存储过程分页的示例 在数据库管理中,存储过程是一种预先定义并编译好的SQL程序,它可以接受输入参数,并返回一个或多个结果集或返回值。存储过程能够提高应用程序性能、增强代码重用性以及提高数据的安全...

    sql存储过程分页代码

    ### SQL存储过程分页代码详解 #### 一、概述 在数据库操作中,分页查询是一种常见的需求。尤其是在处理大量数据时,为了提高查询效率和用户体验,通常会采用分页的方式来展示数据。本文将详细解析一个SQL Server中...

    存储过程分页实现实例源码

    存储过程分页实现实例源码 源码描述: Filename: PeterPageList * Description: 主要运用sql存储过程进行分页实现,在进行分页实现,需要注意一下事项, * 在项目的根目录下面有一个db文件夹,请认真阅读,里面包含...

    Oracle 存储过程分页

    Oracle 提供了多种方法实现分页查询,下面我们将详细探讨Oracle存储过程中的分页实现。 1. **ROWNUM伪列** 在早期的Oracle版本中,ROWNUM伪列被广泛用于分页。ROWNUM是在结果集生成时自动分配的,表示每一行的顺序...

    最简单的SQL Server数据库存储过程分页

    ### 最简单的SQL Server数据库存储过程分页 #### 知识点概述 在处理大量数据时,分页查询是一项常见的需求。传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的...

    分页存储过程 存储过程分页

    分页存储过程 分页存储过程分页存储过程分页存储过程

    高效分页存储过程 高效分页存储过程

    高效分页存储过程的实现对于优化数据库性能至关重要。本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数...

    存储过程分页(适合多表)

    二、存储过程分页的优势 1. 性能优化:存储过程在服务器端编译一次,后续执行时直接调用,减少了SQL解析的时间。 2. 安全性:通过存储过程,可以限制对数据库的直接访问,减少SQL注入的风险。 3. 代码复用:存储...

    利用SQL游标存储过程分页方案

    利用SQL游标存储过程分页方案,以前用过,应该还行

    储存过程分页

    一、存储过程分页的概念 分页是数据库查询中常见的一种技术,它允许用户按需获取数据,而不是一次性加载所有记录,从而提高页面加载速度和用户体验。在存储过程中实现分页,就是将分页逻辑封装进存储过程,通过传入...

Global site tag (gtag.js) - Google Analytics