手机
当前位置:查字典教程网 >编程开发 >Oracle教程 >oracle 分页 很棒的sql语句
oracle 分页 很棒的sql语句
摘要:CREATEORREPLACEPROCEDUREPROC6338196642095312503719(输入新闻主题Varchar2,输入新闻...

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语句】相关文章:

Oracle存储过程入门学习基本语法

Oracle数据表分区的策略

oracle导入导出

oracle sql select语句的使用方法

oracle11g创建数据库的方法

Oracle 数据表分区的策略

oracle 时间格式的调整

Oracle中获取执行计划的几种方法分析

oracle快速删除重复的记录

Oracle 随机数

精品推荐
分类导航