博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 通用分页存储过程
阅读量:5093 次
发布时间:2019-06-13

本文共 1844 字,大约阅读时间需要 6 分钟。

1.创建游标类型

 

create or replace package PDTypes as  TYPE ref_cursor IS REF CURSOR;end;

2.创建分页存储过程

 

PROCEDURE sp_Pager(vp_sql         in varchar2, --查询sql语句                   vp_ordercolumn in varchar2, --排序字段                      vp_orderstyle  in varchar2, --排序方式                     vp_currpage    in number,   --当前页                   vp_pagesize    in number,   --每页显示的记录数                   vp_totalrow    out number,  --总记录数                   vp_totalpage   out number,  --总页数                   vp_cur         out PDTypes.ref_cursor) is  v_sql         varchar2(4000) := ''; --sql语句  v_startrecord number(8); --开始记录数  v_endrecord   number(8); --结束记录数  v_pagesize    number;  v_currpage    number;begin  v_currpage := vp_currpage;  v_pagesize := vp_pagesize;  --总记录数  v_sql := 'select to_number(count(*)) from (' || vp_sql || ') m where 1=1';  execute immediate v_sql    into vp_totalrow;  --验证页面大小     if vp_pagesize < 0 then    v_pagesize := 0;  end if;  --根据页面大小计算总页数     if mod(vp_totalrow, v_pagesize) = 0 then    vp_totalpage := vp_totalrow / v_pagesize;  else    vp_totalpage := Floor(vp_totalrow / v_pagesize) + 1;  end if;  --验证页号  if vp_currpage < 1 then    v_currpage := 1;  end if;  if vp_currpage > vp_totalpage then    v_currpage := vp_totalpage;  end if;  --实现分页查询  v_startrecord := (v_currpage - 1) * v_pagesize + 1;  v_endrecord   := v_currpage * v_pagesize;  v_sql         := 'select * from (select a.*,rownum r from ' ||                   '(select * from (' || vp_sql || ') m ';  if length(trim(vp_ordercolumn)) > 0 then    v_sql := v_sql || ' order by ' || vp_ordercolumn || ' ' ||             vp_orderstyle;  end if;  v_sql := v_sql || ') a) b where r>=' || v_startrecord || ' and r<=' ||           v_endrecord;  dbms_output.put_line(v_sql);  open vp_cur for v_sql;end;

转载于:https://www.cnblogs.com/zhangbingCoder/p/5165298.html

你可能感兴趣的文章
hdu 1874 畅通project续
查看>>
Tomcat Session Clustering
查看>>
HTML和CSS代码片段快速编写方式(Emmet Documentation)
查看>>
使用shadow dom封装web组件
查看>>
static_cast、dynamic_cast、const_cast和reinterpret_cast总结(转)
查看>>
luoguP1594 护卫队
查看>>
redirect()重新定向·
查看>>
Android Studio 基础知识
查看>>
LeetCode962. 最大宽度坡
查看>>
第三章 高级查询(一)
查看>>
提示框的两种写法
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
Git使用- 基本命令
查看>>
Linux下MySQL数据库的备份与还原
查看>>
博客文章汇总
查看>>
python学习 数据类型之序列
查看>>
设计模式简介
查看>>
QAction QActionGroup QMenu 使用方法
查看>>
点火开关分为4个档位,分别是off,acc,IG-on,和ST
查看>>
RDLC报表上下标实现
查看>>