oracle 分页 很棒的sql语句
来源:asp之家 发布时间:2009-07-02 11:44:00
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;


猜你喜欢
- 在收发快递填写地址的时候,我们会经常手动输入地址让程序智能识别,标准的地址比如,xx省xx市xx县/区xx路xx号,不过有时候也可以简单写:
- 1、jsp页面,携带值跳转到新页 original.jsp var btnClick = {'click .showne
- 本文实例讲述了PHP面向对象程序设计继承用法。分享给大家供大家参考,具体如下:<?php//继承是子类(派生类)从父类(基类,超类)继
- 前言学会向程序中添加必要的注释,也是很重要的。注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代
- transforms.Resize()的简单使用简单来说就是调整PILImage对象的尺寸,注意不能是用io.imread或者cv2.imr
- 本文实例讲述了JS模拟简易滚动条效果的方法。分享给大家供大家参考,具体如下:使用Js模拟滚动条。简易模式,类似手机上常见的滚动条。效果如下:
- DROP TABLE 数据表名称 (永久性删除一个数据表) 删除记录:delete from&nbs
- 一、绘制线性图形执行如下代码import matplotlib.pyplot as pltdataX=[1,2,3,4]dataY=[2,4
- 本文实例讲述了基于进程内通讯的python聊天室实现方法。分享给大家供大家参考。具体如下:#!/usr/bin/env python# Ad
- 什么是结构体结构是表示字段集合的用户定义类型。它可以用于将数据分组为单个单元而不是将每个数据作为单独的值的地方。例如,员工有firstNam
- Notepad++是一款不错的编辑器,很轻巧,我很喜欢它。再换个主题,加个代码高亮,看上去就更专业了。如果你是Mac用户,应该听说或使用过T
- setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。语法:setTimeout(code,millisec)参数:cod
- 一般数据库默认是10次尝试失败后锁住用户 1、查看FAILED_LOGIN_ATTEMPTS的值selec
- 1、数据库架构1.1、MySQL 的基础架构图给面试官讲一下 MySQL 的逻辑架构,有白板可以把下面的图画一下,图片来源于网络。Mysql
- 目录一、装饰器使用场景二、为什么需要装饰器1、先来看一个简单例子:2、增加需求3、又有需求三、基础装饰器入门1、装饰器语法糖2、对带参数的函
- 运行vue项目报错 Module build failedModule build failed (from ./node_modules/
- 以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.我们能从Python官方文档里读到应该
- 需求背景:进行分值计算。如下图,如果只是一两个还好说,写写判断,但是如果有几十个,几百个,会不会惨不忍睹。而且,下面的还是三种情况。例如:解
- 1.file--->settings:2.搜索temlates,点击File and Code Templates,点击右侧的Pyth
- 当我们进行数据分析时,有时候需要对数值型数据进行离散化,将其划分为不同的标签或类别。这样做可以方便我们进行统计和分析,并帮助我们更好地理解数