zoukankan      html  css  js  c++  java
  • Oracle 存储过程之通用分页查询

    在数据库中书写通用分页存储过程,有利于代码的维护以及执行效率的提升

    create or replace procedure Sp_QueryDatePage
    (
                  tableName in varchar2,--表名
                  fieldes  in  varchar2,---查询结果显示字段
                  wherecase in  varchar2,---查询条件
                  pageSize  in number, --页记录数
                  pageNow in number,--当前页
              orderField  varchar2,-排序字段,为空表示不排序
                  orderFlag  number,- 排序标识 0:正序 1: 倒序
                  myrows out number ,--总记录数
                  myPageCount out number ,---总分页
                  p_cursor out  SP_QueryDatePackage.SP_QueryDate_cursor ----返回记录数
    )    is
    
    v_sql varchar2(10000);
    
    --定义两个整数
    v_begin number:=(pageNow -1)* pageSize+1; --开始记录
    v_end   number:=pageNow* pageSize;       -- 结束记录
    
    --排序sql
    v_orderSql varchar2(100):='';
    v_wherecase varchar2(1000):='';
    
     begin
        -- 判定排序
        if orderFiled is not null  then 
             if orderFlag =0 then 
               v_orderSql:='ordey by'|| orderField'
             else if  orderFlag =1 then 
               v_orderSql:='ordey by'|| orderField||desc;
             else
                null;
             end if;
        end if;
     
       --条件语句
      if  v_wherecase is not null then
          v_wherecase :='where' || wherecase;
      end  if;
      v_sql:='select * from 
              (select t1.*,rownum rn from (select '||fields||'from'||tablename|| v_wherecase||''|| v_orderSql ||') t1 where rownum<='||v_end||') 
               where  rn >='|| v_begin
    --把游标和sql关联
    open p_curson  for v_spl;
    --计算myrow 和MypageCount
    
    v_sql :='select count(*) from '||tableName||v_wherecase||''||v_orderSql;
    
    execute immediate  v_sql  into myrows;
    
    -- 计算myPageCount (页数)
    if mod(myrows,Pagesize)=0 then
       myPageCount:=myrows/Pagesize;
    else 
      myPageCount:=myrows/Pagesize+1;
    
     end if;
  • 相关阅读:
    C#读写txt文件的两种方法介绍
    C#委托的介绍(delegate、Action、Func、predicate)
    C#邮件发送
    ASP.NET 文件上传于下载
    关于Virtual Box虚拟机里的系统不能启动的解决方法
    unity的yield
    unity文件路径
    手机上的unity路径
    readonly
    unity延迟加载图片
  • 原文地址:https://www.cnblogs.com/mancomeon/p/5013496.html
Copyright © 2011-2022 走看看