现在的位置: 首页 > 综合 > 正文

听韩老师的oracle的分页存储过程

2018年05月09日 ⁄ 综合 ⁄ 共 871字 ⁄ 字号 评论关闭

听韩老师的oracle的分页存储过程

--创建一个包,在该包中,我定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页过程
create or replace produrce fenye    --fenye
(tableName in varchar2,
 pageSize in number,
 pageNow in number,
 myRows out number,--总记录数
 myPageCount out number,--总页数
 p_cursor out tespackage.test_cursor,--返回的记录集
) is 

--定义部分
--定义sql语句 字符串
 v_sql varchar2(1000);
--定义两个整数
 v_begin number:=(pageNow-1)*pageSize+1;
 v_end number:=pageNow*pageSize;

begin
--执行部分
 v_sql:='select * from 

                      ( select t1.*,rownum rn from	
					
			      ( select * from '||tableName||') t1     --第一个select语句出来的表的视图t1

			where rownum<='||v_end||'

		      ) 

	wherw rn>='||v_begin';

--把游标和sql关联
 open p_cursor for v_sql;
--计算myRows和myPageCount
--组织一个sql语句
 v_sql:='select count(*) from '||tableName';
--执行sql语句,并把返回的值赋给myRows
 execute immediate v_sql into myRows;
 if mod(myRows,pageSize)=0 then
     myPageCount:=myRows/pageSize;
 else 
      myPageCount:=myRows/pageSize+1;
 end if;
--关闭游标
 close p_cursor;
end;

 

抱歉!评论已关闭.