当前位置: 首页 > 图文教程 > 数据库 > Oracle > oracle 分页 很棒的sql语句

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

Oracle 中的 oracle 分页 很棒的sql语句


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 60 ::
收藏到网摘: n/a

oracle 分页 很棒的实现方法,大家可以分析下。 CREATE OR REPLACE PROCEDURE PROC6338196642095312503719(输入新闻主题 Varchar2,输入新闻内容 Varchar2,输入发布时间 Varchar2,输入当前页码 Number,输入每页行数 Number,输出当前页码 OUT Number,输出总行行数 OUT Number,输出总页页数 OUT Number,输入是否下页 Number,输入新闻编号 Varchar2,RETURN_CURSOR OUT CUSTOMTYPE.MYRCTYPE)
--功能描述:
--编写人:
--编写日期:
--如果返回结果集,必须使用自定义游标Return_Cursor
IS --OR AS
--变量定义区
v_cPageCount integer; -- 要显示的数据总行数
v_cPage integer; -- 要显示数据的当前页
BEGIN
--存储过程主体
if 输入新闻编号 is null then
begin
--- 输出总行行数
select max(rownum) into 输出总行行数 from(
select * from xtnews where 1=1
and 输入新闻主题 is null or (输入新闻主题 is not null and V_XWZT like '%'||输入新闻主题||'%')
and 输入发布时间 is null or (输入发布时间 is not null and D_FBSJ = to_date(输入发布时间,'yyyy-mm-dd'))
)where 输入新闻内容 is null or (输入新闻内容 is not null and V_XWNR like '%'||输入新闻内容||'%');
-- 输出总页页数
select ceil(输出总行行数/输入每页行数) into 输出总页页数 from dual;
exception when no_data_found then
null;
end;
-- 计算 输入当前页码 要显示的数据总行数
if 输入当前页码 is not null then
-- xia一页
if 输入是否下页 = 1 then
-- 计算 获取数据的当前页
v_cPage := (输入当前页码 + 1);
-- 最后一页
if v_cPage > 输出总页页数 then
v_cPage := 输出总页页数;
end if;
end if;
-- shang一页
if 输入是否下页 = 0 then
-- 计算 获取数据的当前页
v_cPage := (输入当前页码 - 1);
-- 最前一页
if v_cPage = 0 then
v_cPage := 1;
end if;
end if;
-- 要显示的数据总行数
v_cPageCount := v_cPage * 输入每页行数;
end if;
end if;
-- 执行查询 获取 要显示的数据
begin
open return_cursor for
select nts.* from(
select nt.* from (
select rownum 序号,n.* from(
select * from(
select * from(
select
I_ID 新闻编号,
V_XWZT 新闻主题,
V_XWNR 新闻内容,
D_FBSJ 发布时间,
D_YXSJ 有效时间,
V_FBBM 发布部门
from xtnews
where 1=1 and 输入新闻主题 is null or (输入新闻主题 is not null and V_XWZT like '%'||输入新闻主题||'%')
)where 输入新闻内容 is null or (输入新闻内容 is not null and 新闻内容 like '%'||输入新闻内容||'%')
)where 输入发布时间 is null or (输入发布时间 is not null and 发布时间 = to_date(输入发布时间,'yyyy-mm-dd'))
)n where 输入新闻编号 is null or (输入新闻编号 is not null and 新闻编号 = 输入新闻编号)
order by rownum
)nt where nt.序号 <= v_cPageCount order by 序号 desc
)nts where nts.序号 > (v_cPageCount-输入每页行数) order by 序号;
exception when no_data_found then
null;
end;
-- 输出最后计算的当前页码
if 输入新闻编号 is null and v_cPage is not null then
输出当前页码 := v_cPage;
end if;
END;