oracle公用分页存储过程
来源:互联网 发布:冰箱品牌知乎 编辑:程序博客网 时间:2024/05/21 22:58
create or replace PROCEDURE Common_Paging
(
tableName in NVARCHAR2,--表名
fields in VARCHAR2,--查询结果显示字段
wherecase in VARCHAR2,--查询条件
pageSize in NUMBER,--页显示记录数
pageNow in NUMBER,--当前页
orderField VARCHAR2,--排序字段,为空表示不排序
orderFlag NUMBER,--排序标识 0:正序 1:倒序
allRowNum out NUMBER,--总记录数
allPageNum out NUMBER, -- 总分页数
p_cursor out pagingpackage.paging_cursor --返回记录集
)as
--自定义部分
--定义sql语句字符串
para_sql varchar2(1000);
--定义两个整数
para_begin number:=(pageNow-1)*pageSize+1;
para_end number:=pageNow*pageSize;
--排序sql
para_orderSql varchar2(100);
para_wherecase varchar2(500);
begin
para_orderSql:='';
para_wherecase:='';
--执行部分
--如果orderField不为空,则进行排序,如果orderFlag=0为升序,1为降序
if orderField is not null then
if orderFlag=0 then
para_orderSql:=' order by '||orderField;
elsif orderFlag=1 then
para_orderSql:=' order by '||orderField||' desc';
else
null;
end if;
end if;
if wherecase is not null then
para_wherecase:=' where '||wherecase;
end if;
para_Sql:='select * from
(select t1.* ,rownum rn from(select '|| fields ||' from '||tableName||para_wherecase||' '||para_orderSql||') t1 where rownum<='||para_end||')
where rn>='|| para_begin;
dbms_output.put_line(para_Sql);
--把sql游标和sql关联
open p_cursor for para_Sql;
--计算 allRowNum 和allPageNum
--组织一个sql
para_sql:='select count(*) from '||tableName||para_wherecase ||' '||para_orderSql;
--执行sql,并把返回的值赋给allRowNum
execute immediate para_sql into allRowNum;
--计算allPageNum
if mod(allRowNum,pageSize)=0 then
allPageNum:=allRowNum/pageSize;
else
allPageNum:=allRowNum/pageSize+1;
end if;
allPageNum:=floor(allPageNum);
--关闭游标
--close p_cursor;
end Common_paging;
(
tableName in NVARCHAR2,--表名
fields in VARCHAR2,--查询结果显示字段
wherecase in VARCHAR2,--查询条件
pageSize in NUMBER,--页显示记录数
pageNow in NUMBER,--当前页
orderField VARCHAR2,--排序字段,为空表示不排序
orderFlag NUMBER,--排序标识 0:正序 1:倒序
allRowNum out NUMBER,--总记录数
allPageNum out NUMBER, -- 总分页数
p_cursor out pagingpackage.paging_cursor --返回记录集
)as
--自定义部分
--定义sql语句字符串
para_sql varchar2(1000);
--定义两个整数
para_begin number:=(pageNow-1)*pageSize+1;
para_end number:=pageNow*pageSize;
--排序sql
para_orderSql varchar2(100);
para_wherecase varchar2(500);
begin
para_orderSql:='';
para_wherecase:='';
--执行部分
--如果orderField不为空,则进行排序,如果orderFlag=0为升序,1为降序
if orderField is not null then
if orderFlag=0 then
para_orderSql:=' order by '||orderField;
elsif orderFlag=1 then
para_orderSql:=' order by '||orderField||' desc';
else
null;
end if;
end if;
if wherecase is not null then
para_wherecase:=' where '||wherecase;
end if;
para_Sql:='select * from
(select t1.* ,rownum rn from(select '|| fields ||' from '||tableName||para_wherecase||' '||para_orderSql||') t1 where rownum<='||para_end||')
where rn>='|| para_begin;
dbms_output.put_line(para_Sql);
--把sql游标和sql关联
open p_cursor for para_Sql;
--计算 allRowNum 和allPageNum
--组织一个sql
para_sql:='select count(*) from '||tableName||para_wherecase ||' '||para_orderSql;
--执行sql,并把返回的值赋给allRowNum
execute immediate para_sql into allRowNum;
--计算allPageNum
if mod(allRowNum,pageSize)=0 then
allPageNum:=allRowNum/pageSize;
else
allPageNum:=allRowNum/pageSize+1;
end if;
allPageNum:=floor(allPageNum);
--关闭游标
--close p_cursor;
end Common_paging;
0 0
- oracle公用分页存储过程
- 公用分页存储过程
- oracle存储过程分页
- oracle存储过程分页
- Oracle分页存储过程
- Oracle 存储过程分页
- ORACLE分页存储过程
- oracle 分页存储过程
- Oracle分页存储过程
- Oracle分页存储过程
- Oracle存储过程分页
- oracle 分页存储过程
- Oracle存储过程分页
- Oracle分页存储过程
- oracle 分页 存储过程
- Oracle存储过程分页
- oracle分页存储过程
- Oracle分页存储过程
- 141.Linked List Cycle (判断一个单链表是否有环)
- nyoj35表达式求值
- 利用反射输出类的结构:方法、构造器签名和全部域名
- iOS中MapKit
- 什么类型客户适合做展示型网站
- oracle公用分页存储过程
- android开发中出现的错误集(不断更新)
- 欢迎使用CSDN-markdown编辑器
- eclipse的快捷键--收藏
- HDU 2120--Ice_cream's world I【并查集, 判断环的个数】
- 《C++编程思想》 第七章 常 量 (原书代码+习题+解答)
- [JS插件] pageSwitch 适合移动端整屏滚动效果的使用教程
- 星云测试--让软件像普通商品一样放心交易
- 约瑟夫环(C++单项循环链表)