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

oracle存储过程分页

阅读更多
存储过程 create or replace package pkg_query
as type
cur_query is ref cursor;
procedure proc_qurey
(
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); --返回的结果集
end pkg_query;


create or replace package body pkg_query
is
create or replace
procedure proc_qurey
(
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 or p_strWhere <> '' then
v_sql:=v_sql || ' and '|| p_strWhere;
end if;
execute immediate v_sql into p_totalRecords;

--验证页面记录大小
if p_pageSize<0 then
p_pageSize:=0;
end if;

--根据页大小计算总页数
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 or p_strWhere <> '' then
v_sql := v_sql || ' where 1=1 and ' || p_strWhere;
end if;

if p_orderColumn IS NOT NULL or p_orderColumn <> '' 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 proc_qurey;
end pkg_query;
分享到:
评论

相关推荐

    Oracle存储过程分页

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

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Oracle 存储过程分页

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

    ORACLE存储过程分页

    ### ORACLE存储过程分页实现详解 在Oracle数据库中,实现数据分页是常见的需求,尤其是在处理大量数据时,为了提高查询效率和响应速度,分页技术显得尤为重要。本文将详细解析如何通过Oracle存储过程来实现分页功能...

    oracle 存储过程分页

    ### Oracle存储过程实现分页查询知识点详解 #### 一、背景与目的 在数据库操作中,分页查询是非常常见的需求之一。特别是在数据量较大的场景下,分页不仅可以提高查询效率,还能改善用户体验。Oracle数据库提供了...

    java Oracle存储过程分页整理

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

    基于ORACLE存储过程分页的实现方法.pdf

    《基于ORACLE存储过程分页的实现方法》 在当今信息化社会,关系型数据库Oracle作为主流的数据库管理系统,被广泛应用于各类信息系统中。随着大数据时代的到来,如何高效地处理和展示海量数据成为了一个重要的问题。...

    oracle存储过程分页.docx

    Oracle存储过程是数据库管理系统中用于执行特定数据库操作的预编译SQL和PL/SQL代码集合。在Oracle中,存储过程可以被用来实现复杂的业务逻辑,提高数据库性能,并且减少网络流量。分页查询是数据库应用中常见的功能...

    java—oracle存储过程分页

    一个简单的oracle存储过程分页技术,希望对大家的学习,开发有所帮助。 执行步骤: 1:在oralce客户端执行OracleSplit类中的包,和存储过程。 2:采用的是oracle只带的表emp大家下载后只需要把数据库名改为本地的...

    oracle 存储过程分页示例

    总的来说,Oracle存储过程结合ROWNUM伪列提供了灵活且高效的分页解决方案。通过这种方式,开发者可以方便地在应用程序中实现分页查询,同时保持良好的性能。在实际开发中,你可能需要根据具体的业务需求对这个示例...

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

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

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

    接下来,我们关注`.cs`代码部分,这部分通常涉及到C#后端如何调用Oracle存储过程并处理返回的数据。你可以使用Oracle Managed Data Access (ODP.NET)库来实现。以下是一个简单的示例: ```csharp using Oracle....

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    asp.net使用oracle分页存储过程查询数据

    1、请先在Oracle数据中新建存储过程 2、修改代码中的相关参数。比如,连接数据库字符串,查询的sql语句等 注意:查询sql语句中必须包含rownum字段,别名是rn。rownum是Oracle关键字。 存储是来自...

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

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

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

    总结来说,Oracle存储过程实现分页查询的关键在于动态构造SQL语句,结合ROWNUM或ROW_NUMBER()来实现分页。理解这一机制有助于我们在处理大量数据时编写高效、可复用的代码。在实际应用中,根据具体需求和数据库设计...

    oracle分页存储过程

    oracle分页存储过程,oracle分页存储过程

    oracle存储过程通用分页

    这篇博客“Oracle存储过程通用分页”将深入探讨如何利用Oracle存储过程来实现高效、灵活的分页功能。 首先,理解分页的基本概念至关重要。分页是将大型数据集分成若干小块,每次只加载一部分数据到内存中,这样可以...

    Oracle分页存储过程

    通过上述分析和示例,我们可以看到,利用Oracle存储过程进行分页查询不仅可以提高查询效率,还能增强代码的可读性和可维护性。在实际项目中,结合C#等高级语言的应用,可以进一步提升系统的性能和用户体验。

Global site tag (gtag.js) - Google Analytics