Oracle分页存储过程(转)
2007-07-15 22:06
531 查看
create or replace package PKG_Tools
is
type ResultData is ref cursor;
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out ResultData);
end PKG_Tools;
/
create or replace package body PKG_Tools
is
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out ResultData)
as
v_sql varchar2(3000);
v_count int;
v_heiRownum int;
v_lowRownum int;
begin
----取记录总数
execute immediate p_SqlCount into v_count;
p_OutRecordCount := v_count;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize +1;
v_sql := 'SELECT *
FROM (
SELECT A.*, rownum rn
FROM ('|| p_SqlSelect ||') A
WHERE rownum <= '|| to_char(v_heiRownum) || '
) B
WHERE rn >= ' || to_char(v_lowRownum) ;
--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
OPEN p_OutCursor FOR v_sql;
end sp_Page;
end PKG_Tools;
/
is
type ResultData is ref cursor;
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out ResultData);
end PKG_Tools;
/
create or replace package body PKG_Tools
is
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out ResultData)
as
v_sql varchar2(3000);
v_count int;
v_heiRownum int;
v_lowRownum int;
begin
----取记录总数
execute immediate p_SqlCount into v_count;
p_OutRecordCount := v_count;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize +1;
v_sql := 'SELECT *
FROM (
SELECT A.*, rownum rn
FROM ('|| p_SqlSelect ||') A
WHERE rownum <= '|| to_char(v_heiRownum) || '
) B
WHERE rn >= ' || to_char(v_lowRownum) ;
--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
OPEN p_OutCursor FOR v_sql;
end sp_Page;
end PKG_Tools;
/
相关文章推荐
- oracle 分页存储过程
- oracle高效分页存储过程(百万数据级)
- ORACLE高效分页存储过程代码
- oracle存储过程分页代码
- Oracle问题小记五:服务启动-索引-子查询-分页存储过程
- Oracle与C#存储过程分页
- 一个简单的oracle分页存储过程的实现和调用
- java调用Oracle分页存储过程
- Oracle分页存储过程以及C#调用
- oracle高效分页存储过程(百万数据级)
- Oracle大数据量分页通用存储过程
- oracle 分页存储过程
- oracle海量数据分页存储过程
- oracle 中通用的分页存储过程
- oracle高效分页存储过程(百万数据级)
- ORACLE 自定义分页存储过程
- ORACLE高效分页存储过程代码
- oracle实现存储过程分页查询(非包)
- 听韩老师的oracle的分页存储过程
- Oracle 高效分页存储过程实例 含javademo