CREATE OR REPLACE PROCEDURE prc_query
(p_tableName in varchar2, --表名
p_strWhere in varchar2, --查询条件
p_orderColumn in varchar2, --排序的列
p_orderStyle in varchar2, --排序方式
p_curPage in out Number, --当前页
p_pageSize in out Number, --每页显示记录条数
p_totalRecords out Number, --总记录数
p_totalPages out Number, --总页数
v_cur out pkg_query.cur_query) --返回的结果集
IS
v_sql VARCHAR2(1000) := ''; --sql语句
v_startRecord Number(4); --开始显示的记录条数
v_endRecord Number(4); --结束显示的记录条数
BEGIN
--记录中总记录条数
v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM ' || p_tableName || ' WHERE 1=1';
IF p_strWhere IS NOT NULL THEN
v_sql := v_sql || p_strWhere;
END IF;
EXECUTE IMMEDIATE v_sql INTO p_totalRecords;
--验证页面记录大小
IF p_pageSize < 0 THEN
p_pageSize := 0;
END IF;
--根据页大小计算总页数[Page]
IF MOD(p_totalRecords,p_pageSize) = 0 THEN
p_totalPages := p_totalRecords / p_pageSize;
ELSE
p_totalPages := p_totalRecords / p_pageSize + 1;
END IF;
--验证页号
IF p_curPage < 1 THEN
p_curPage := 1;
END IF;
IF p_curPage > p_totalPages THEN
p_curPage := p_totalPages;
END IF;
--实现分页查询
v_startRecord := (p_curPage - 1) * p_pageSize + 1;
v_endRecord := p_curPage * p_pageSize;
v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM ' ||
'(SELECT * FROM ' || p_tableName;
IF p_strWhere IS NOT NULL THEN
v_sql := v_sql || ' WHERE 1=1' || p_strWhere;
END IF;
IF p_orderColumn IS NOT NULL THEN
v_sql := v_sql || ' ORDER BY ' || p_orderColumn || ' ' || p_orderStyle;
END IF;
v_sql := v_sql || ') A WHERE rownum <= ' || v_endRecord || ') B WHERE r >= '
|| v_startRecord;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;
END prc_query;
分享到:
相关推荐
高效分页存储过程的实现对于优化数据库性能至关重要。本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...
### 万能分页存储过程知识点详解 #### 一、概述 在数据库操作中,分页查询是一项常用且重要的技术,特别是在数据量较大的场景下,能够显著提高用户体验和系统性能。本文将详细介绍一个名为“万能分页存储过程”的...
本文将深入解析MySQL中的分页存储过程,通过实例代码讲解其工作原理与实现步骤。 ### MySQL分页存储过程概述 分页存储过程是一种在数据库层面上实现数据分页的技术。相比应用程序级别的分页,它能更高效地处理数据...
在IT领域,分页存储过程是数据库管理中的一个重要概念,特别是在构建大规模的Web应用程序时,如新闻系统。分页能够有效地提高用户体验,因为用户可以逐步加载数据,而不是一次性加载所有内容,这降低了服务器的负担...
分页存储过程 分页存储过程 分页存储过程 sql代码
"C#调用分页存储过程"是一个常见的技术实践,它结合了C#编程语言和SQL Server的存储过程来高效地获取数据库中的分页数据。这种方法可以有效地减少网络传输的数据量,提高用户界面的响应速度,尤其是在数据量达到百万...
### 通用分页存储过程知识点解析 #### 一、存储过程概述 在数据库管理系统中,存储过程是一种预先编译并存储在数据库中的SQL程序。它能够接收参数,并根据这些参数执行复杂的逻辑操作,如数据查询、更新等。通过...
本文将深入探讨如何通过使用存储过程来实现高效的分页存储过程,特别是针对ASP.NET应用程序。 标题 "效率高的分页存储过程实现的分页" 提到的是一种优化数据检索的技术。在ASP.NET开发中,GridView控件是常用的数据...
SQL Server 分页存储过程是一种在数据库中实现高效数据分页查询的方法。在大型数据集的展示中,分页是必不可少的,因为它允许用户逐步浏览数据,而不是一次性加载所有记录,从而提高用户体验并减少服务器负载。以下...
"Oracle分页存储过程 终极版"旨在提供一个高效、灵活的解决方案,以应对各种分页查询的需求。这个存储过程优化了性能,并支持各种条件筛选和排序,使得在海量数据中进行分页操作变得更为便捷。 首先,理解分页的...
本文将深入探讨如何使用C#语言调用SQL Server的分页存储过程,帮助开发者更高效地处理大量数据。 首先,理解分页查询的概念。分页查询是一种在大数据集上进行有效检索的方法,它允许用户按需加载一定数量的数据,而...
二、SQL Server的分页存储过程 在SQL Server中,可以使用`OFFSET`和`FETCH NEXT`语句实现分页。下面是一个简单的分页存储过程示例: ```sql CREATE PROCEDURE [dbo].[usp_GetPagedData] @TableName NVARCHAR(128)...
oracle分页存储过程,oracle分页存储过程
### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...
在分页存储过程中,主要理解了变量的动态赋值和输入输出参数的使用就非常简单了 下面为调用方法: var c_Preccount number; var c_Ppagecount number; var c_cur refcursor; exec proc_SpPag(1,'SELECT * FROM T_...
### 效率极高的万能分页存储过程 在数据库操作中,分页查询是非常常见的需求之一,尤其是在处理大量数据时。本篇文章将详细介绍一个高效且灵活的分页存储过程,该过程能够满足多种场景下的分页需求,并具有较高的...
一个高效的分页存储过程可能如下所示: ```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_...