改进的Oracle分页存储过程
来源:互联网 发布:小米手机如何连mac 编辑:程序博客网 时间:2024/05/16 10:24
--Oracle分页存储过程(1)--
--定义包头部
create or replace package ZK_Pack is
type refCursorType is ref cursor; --定义游标变量用于返回记录集
procedure PageSort_proc
(p_field in varchar2, --要查询的字段
p_sql in varchar2, --表名
p_PageSize in number, --每页记录数
p_PageNo in number, --当前页码,从 1 开始
p_OutRecordCount out number, --返回总记录数
p_OutCursor out refCursorType);
end ZK_Pack;
--定义包主体
create or replace package body ZK_Pack is
procedure PageSort_proc(
p_field in varchar2, --要查询的字段
p_sql in varchar2, --表名
p_PageSize in number, --每页记录数
p_PageNo in number, --当前页码,从 1 开始
p_OutRecordCount out number, --返回总记录数
p_OutCursor out refCursorType)
as
v_sql varchar2(3000);
v_heiRownum number;
v_lowRownum number;
begin
----取记录总数
v_sql := 'select count(*) from ('|| P_sql ||')' ;
execute immediate v_sql into p_OutRecordCount;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize + 1;
--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
--三层嵌套查询
--v_sql := 'SELECT ' || p_field || ' from (select ' || p_field || ',rownum rn FROM( ' || p_sql || ' )WHERE rownum <= '|| to_char(v_heiRownum)||')WHERE rn >= ' || to_char(v_lowRownum);
--两层嵌套查询
v_sql := 'select ' || p_field || ' from (' || P_sql || ' and rownum<='|| to_char(v_heiRownum)||') where rn>= ' || to_char(v_lowRownum);
open p_OutCursor for v_sql;
end PageSort_proc;
end ZK_Pack;
之前写的一个 和现在的这个最大的却别在于 之前的是
v_sql := 'select * from (' || Psql || ') where rn between ' || v_Pbegin || ' and ' || v_Pend;
现在的是
v_sql := 'select ' || p_field || ' from (' || P_sql || ' and rownum<='|| to_char(v_heiRownum)||') where rn>= ' || to_char(v_lowRownum);
当数据比较多得时候 select * 可能就比select id,name......要更耗资源,另外,现在采用的是三层嵌套循环效率可能比之前写的好些,期待有更优的写法
- 改进的Oracle分页存储过程
- oracle分页的存储过程
- ORACLE分页的存储过程
- oracle 分页的存储过程
- oracle分页的存储过程
- 改进的效率较高的sql2000分页存储过程
- oracle存储过程分页
- oracle存储过程分页
- Oracle分页存储过程
- Oracle 存储过程分页
- ORACLE分页存储过程
- oracle 分页存储过程
- Oracle分页存储过程
- Oracle分页存储过程
- Oracle存储过程分页
- oracle 分页存储过程
- Oracle存储过程分页
- Oracle分页存储过程
- 2010年司法考试教材九星连珠
- CSS成为设计师必备知识的十大理由
- JQuery基础之(三)JQuery选择器
- JQuery基础之(四)JQuery包装集
- 优秀的SDK学习资料
- 改进的Oracle分页存储过程
- Minix操作系统进程间通信中有关消息传递机制的说明
- Linux线程实现机制分析(绝对经典)
- Delphi正则表达式使用方法(TPerlRegEx)
- 你还急着买房吗?
- JQuery基础之(五)使用JQuery操作元素的属性和样式
- Oracle数据库恢复-使用RMAN恢复到不同主机实例
- pku 1321 棋盘问题 简单DFS
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找