CREATE OR REPLACE PROCEDURE PROC6338196642095312503719(输入新闻主题 Varchar2,输入新闻内容 Varchar2,输入发布时间 Varchar2,输入当前页码 Number,输入每页行数 Number,输出当前页码 OUT Number,输出总行行数 OUT Number,输出总页页数 OUT Number,输入是否下页 Number,输入新闻编号 Varchar2,RETURN_CURSOR OUT CUSTOMTYPE.MYRCTYPE) --功能描述: --编写人: --编写日期:
--存储过程主体 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;