`
Programmer_ZhangDi
  • 浏览: 15029 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Oracle分页过程

阅读更多
CREATE OR REPLACE  PROCEDURE "CCUSER"."PRO_PAGETEST" (
tb varchar2,--表名
col varchar2,---按该列来进行分页
collist varchar2,--要查询出的字段列表,*表示全部字段
condition varchar2,--查询条件
orderby integer,--排序 0=升序,1=降序
pagesize integer,--指定每页记录条数
page integer,--指定页
pages out integer--总记录数

)
as
 sqlstr1 varchar2(4000);--分页查询的SQL
 sqlstr2 varchar2(1500);--求总页数据的SQL
 orderbystr varchar2(150);--排序串
 pageTotal number;--总页数
 tmpCount integer;
 type ref_cur is ref cursor;--定义游标类型
 v_tabCursor ref_cur;--定义游标变量
 --halfpageTotal integer;--半页数

begin

--========求总页数================================
sqlstr2:='SELECT COUNT(*) FROM '||tb||condition;
execute immediate sqlstr2 into tmpCount;
--================================================
pages:=tmpCount;
if(orderby=0) then
orderbystr:=' ORDER BY '||col||' ASC';
else
orderbystr:=' ORDER BY '||col||' DESC';
end if;

--=======求页数===================================
pageTotal:= pages/pagesize;
if(pagesize/2>mod(pages,pagesize)) then
pageTotal:=pageTotal+1;
end if;
--halfpageTotal:=pageTotal/2;
--================================================
sqlstr1:='SELECT '||collist||' FROM (SELECT ROWNUM rownumindex,'||collist||' FROM '||tb||' '||condition||' and  rownumindex<='||(pagesize*page)||orderbystr||') PAGESTBTMP where PAGESTBTMP.rownumindex>'||(pagesize*(page-1))||' and PAGESTBTMP.rownumindex<='||(pagesize*page);

OPEN v_tabCursor FOR sqlstr1;
end;
 
修正

 

CREATE OR REPLACE PACKAGE PACK_PRO_PATINFO   AS   
TYPE PAYINFO_CURSOR IS REF CURSOR;   
end PACK_PRO_PATINFO; 

CREATE OR REPLACE  PROCEDURE PRO_PAYINFO (
tb varchar2,--表名
col varchar2,---按该列进行分页排序
colnewlist varchar2,--子查询临时表列
collist varchar2,--要查询出的字段列表,*表示全部字段
condition varchar2,--查询条件
orderby integer,--排序 0=升序,1=降序
pagesize integer,--指定每页记录条数
page integer,--指定页
pages out integer,--总记录数
p_corsor out PACK_PRO_PATINFO.PAYINFO_CURSOR
)
as
 sqlstr1 varchar2(4000);--分页查询的SQL
 sqlstr2 varchar2(1500);--求总页数据的SQL
 orderbystr varchar2(150);--排序串
 pageTotal number;--总页数
 tmpCount integer;

begin

--========求总页数================================
sqlstr2:='SELECT COUNT(*) FROM '||tb||condition;
execute immediate sqlstr2 into tmpCount;
--================================================
pages:=tmpCount;
if(orderby=0) then
orderbystr:=' ORDER BY '||col||' ASC';
else
orderbystr:=' ORDER BY '||col||' DESC';
end if;

--=======求页数===================================
--pageTotal:= pages/pagesize;
--if(pagesize/2>mod(pages,pagesize)) then
--pageTotal:=pageTotal+1;
--end if;
--halfpageTotal:=pageTotal/2;
--================================================
sqlstr1:='SELECT '||colnewlist||' FROM (SELECT ROWNUM NO,'||collist||' FROM '||tb||' '||condition||' and  ROWNUM<='||(pagesize*page)||orderbystr||') T where T.NO>'||(pagesize*(page-1))||' and T.NO<='||(pagesize*page);

OPEN p_corsor FOR sqlstr1;
end;

 

分享到:
评论

相关推荐

    oracle分页存储过程

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

    Oracle分页存储过程

    ### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...

    Oracle 分页存储过程 终极版

    "Oracle分页存储过程 终极版"旨在提供一个高效、灵活的解决方案,以应对各种分页查询的需求。这个存储过程优化了性能,并支持各种条件筛选和排序,使得在海量数据中进行分页操作变得更为便捷。 首先,理解分页的...

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

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

    Oracle 分页的存储过程

    总结来说,Oracle分页存储过程是通过动态构造SQL语句,结合输入的分页参数,计算出总页数,并返回指定页的数据。这种方式在处理大量数据时提高了效率,同时也提供了灵活的查询控制。通过包装这些逻辑在存储过程中,...

    Oracle 分页存储过程

    在Oracle数据库中,分页查询是一项...总的来说,通过精心设计的存储过程,我们可以实现高效的多条件Oracle分页查询,同时确保查询性能不受数据量的影响。在实际应用中,应根据具体情况进行调整和优化,以达到最佳效果。

    ORACLE分页存储过程

    之前一直用SQL SERVER做项目,但是现在需要用到ORACLE,在网上找了几个都无法正常调用,因此自己写了一个,给大家一起分享,在写的过程中学习到了很多东西,同时也体会到了SQL SERVER和ORACLE中的异同点 在分页存储...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Oracle 存储过程分页

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

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

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

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

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

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

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

    Oracle存储过程分页

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

    Oracle 分页存储过程 SQL

    Oracle 分页存储过程 SQL Oracle 分页存储过程 SQL

    ORACLE分页查询效率

    根据所提供的信息,我们可以提炼出以下关于“ORACLE分页查询效率”的相关知识点: ### 一、Oracle中的分页查询 #### 1.1 分页查询的重要性 - **背景介绍**:在实际应用中,数据库查询结果往往非常庞大,一次性加载...

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

    写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,指定每页显示多少行,调用成功后,会返回页数,行数,还有查询的结果数据集。 使用...

    oracle 分页完整代码

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们需要将结果集分块加载,这就是所谓的分页...理解这些概念和技巧,对于开发过程中处理大规模数据的分页查询至关重要。

    oracle 分页类文件

    Oracle数据库在处理大数据量时,分页查询是必不可少的功能,它可以有效地提高数据检索效率,减少内存占用,并提供更好的用户体验。本文件包包含了一系列用于实现Oracle数据库分页查询的类,帮助开发者解决分页问题。...

Global site tag (gtag.js) - Google Analytics