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;
oracle 分页 很棒的sql语句
2019-11-04 16:07oracle教程网 Oracle
oracle 分页 很棒的实现方法,大家可以分析下。
延伸 · 阅读
- 2022-06-28使用Docker制作Python环境连接Oracle镜像
- 2022-03-08SpringBoot+Mybatis分页插件PageHelper实现分页效果
- 2022-03-07Oracle Linux 能否成为企业级 CentOS 的替代品?
- 2022-03-05Oracle VM VirtualBox 虚拟机硬盘扩容
- 2022-02-28oracle删除超过N天数据脚本的方法
- 2022-02-28解析iReport自定义行数分页的操作方法
精彩推荐
- Oracle
oracle中add_months()函数及用法总结
这篇文章主要介绍了oracle中add_months()函数及用法总结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 ...
- Oracle
Oracle 获得以百分号结尾的脚本有三种写法
本节主要介绍了Oracle 获得以百分号结尾的脚本有三种写法,以获得ID=4443的数据行为例 ...
- Oracle
Oracle 批处理自动备份bat脚本语句的步骤详解
这篇文章主要介绍了Oracle 批处理自动备份bat脚本语句的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友...
- Oracle
ORACLE 系统函数大全SQLSERVER系统函数的异同
下面是Oracle支持的字符函数和它们的Microsoft SQL Server等价函数。...
- Oracle
Oracle除去数据中的换行符以免读取出现问题
将整条数据取出,并用特殊符号分割,如果数据出现换行的情况,那么读取时就有问题,这时就可以采用下面的方法来去除 ...
- Oracle
Oracle数据库的空间管理技巧
在oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定 ...
- Oracle
oracle 多个字符替换实现
CSDN上的一个网友,需要一个sql语句的解决方案需求是这样的求写oracle多个字符替换(有测试数据) ...
- Oracle
Oracle与Mysql自动增长列(id)的区别
这篇文章主要介绍了Oracle与Mysql自动增长列(id)的区别,需要的朋友可以参考下 ...