zoukankan      html  css  js  c++  java
  • oracle 分页存储过程

     create or replace package MyPackage as 
    type MyCursor is ref cursor;
    procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,
      resultCount out int, resultCursor out MyCursor);
    end MyPackage;
    
    create or replace package Body MyPackage is
    procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,
      resultCount out int, resultCursor out MyCursor)
      is
      --定义变量
      newtableName varchar2(4000);
      rowStart  int;
      rowEnd    int;
      mySql varchar2(8000);
      whereOnly varchar2(8000);
      OrderOnly varchar2(400);
      begin
        newtableName:=tableName;
        mySql:='select count(*) from '||tableName;
    
        
        if whereStr is not null and length(whereStr)>0
          then
              rowStart:=instr(whereStr,'order by');
             if rowStart>0 
              then
                whereOnly:=substr(whereStr, 1,rowStart-1);    --取得条件 
                OrderOnly:=substr(whereStr,rowStart, length(whereStr)-rowStart+1);    --取得排序方式(order by 字段 方式) 
              else
                whereOnly:=whereStr;
                OrderOnly:='';
                end if;
               whereOnly:=' where '|| whereOnly;
               mySql:=mySql||whereOnly;
             
         end if;
         execute immediate mySql into resultCount;
           -- dbms_output.put_line('查询总条数SQL=>'||whereStr||'--'||mySql||resultCount); 
        --执行查询,查询总条数 
               
    
    
                --不分页查所有
              
            if pageIndex=0 and pageSize=0    
            then 
            mySql:='select * from '||tableName||whereOnly||OrderOnly;
           else
    --计算起始和结束索引
    
            rowStart:=(pageIndex-1)*pageSize+1; 
            rowEnd:=rowStart+pageSize-1;
            mySql:='select * from (select t.*,RowNum as rn from (select * from '||newtableName||whereOnly||OrderOnly||') t) where rn between '||rowStart||' and '||rowEnd;
          
            end if;
        open ResultCursor for mySql;
       --dbms_output.put_line('SQL=>'||mySql); 
        end SelectBase;
      end MyPackage;

        如果各位遇到了在create or replace package Body MyPackage is  说create错误,那么解决方法是。

    end MyPackage;

    在此,加上“/”并分别执行就搞定了。

    create or replace package Body MyPackage is

  • 相关阅读:
    Django Form组件的扩展
    Python TCP与UDP的区别
    Python三次握手和四次挥手
    网络基础之网络协议
    Python 类方法、实例方法、静态方法的使用与及实例
    python深浅拷贝
    2021牛客寒假算法基础集训营1 题解
    01 Trie 专题
    MOTS:多目标跟踪和分割论文翻译
    牛客巅峰赛S2第6场题解
  • 原文地址:https://www.cnblogs.com/jiguixin/p/2601473.html
Copyright © 2011-2022 走看看