日期:2014-05-16  浏览次数:20470 次

oracle高效分页存储过程代码
create or replace package p_page is
   -- author  : pharaohs
   -- created : 2006-4-30 14:14:14
   -- purpose : 分页过程
   type type_cur is ref cursor      --定义游标变量用于返回记录集
  
   procedure pagination(
   pindex in number                 --分页索引
   psql in varchar2                 --产生dataset的sql语句
   psize in number                  --页面大小
   pcount out number                --返回分页总数
   v_cur out type_cur               --返回当前页数据记录
   )

   procedure pagerecordscount(
   psqlcount in varchar2            --产生dataset的sql语句
   prcount   out number             --返回记录总数
   )

end p_page
/
create or replace package body p_page is

procedure pagination(
   pindex in number
   psql in varchar2
   psize in number 
   pcount out number
   v_cur out type_cur
  )
  as

   v_sql varchar2(1000)
   v_count number 
   v_plow number
   v_phei number
  begin
   ------------------------取分页总数
   v_sql := ' select count() from ('  || psql || ' )' 
    ute immediate v_sql into v_count
   pcount := ceil(v_count/psize)
   ------------------------显示任意页内容
   v_phei := pindex  psize + psize
   v_plow := v_phei - psize + 1
   --psql := ' select rownum rn t. from zzda t'               --要求必须包含rownum字段
   v_sql := ' select  from ('  || psql || ' ) where rn between '  || v_plow || '  and '  || v_phei 

   open v_cur for v_sql
 
  end pagination
 
  --
 
  procedure pagerecordscount(
   psqlcount in varchar2
   prcount   out number
   )
   as
 
    v_sql varchar2(1000)
    v_prcount number
  
   begin
 
    v_sql := ' select count() from ('  || psqlcount || ' )' 
     ute immediate v_sql into v_prcount
    prcount := v_prcount                   --返回记录总数                                                    
  
   end pagerecordscount
 
  --
end p_page
/
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html