zoukankan      html  css  js  c++  java
  • Oracle分页查询的一个存储过程:

    create or replace procedure AspNetOraclePager
    (
           tableName in varchar2, --表名
           fields in varchar2,    --查询解果显示字段
           wherecase in varchar2, --查询条件
           pageSize in number,  --一页显示记录数
           pageNow in number,   --当前页
           orderField  varchar2, --排序字段,为空表示不排序
           orderFlag number,     --排序标识 0:正序 1:倒序
           myrows out number,   --总记录数
           myPageCount out number, --总分页
           --nvd out varchar2,
           p_cursor out testpackage.test_cursor --返回的记录集
    ) is
    --定义部分
    --定义sql语句字符串
    v_sql varchar2(8000);
    --定义两个整数
    v_begin number:=(pageNow-1)*pagesize+1; --开始记录
    v_end number:=pageNow*pageSize;         --结束记录
    --排序sql
    v_orderSql varchar2(100):='';
    v_wherecase varchar2(1000):='';
    begin
      --执行部分
      --如果orderField不为空,则进行排序,如果orderFlag=0为升序,1为降序
      if orderField is not null then
        if orderFlag=0 then
          v_orderSql:=' order by '||orderField;
        elsif orderFlag=1 then
          v_orderSql:=' order by '||orderField||' desc';
        else
          null;
        end if;
      end if;
      --条件判断语句
      if wherecase is not null then
        v_wherecase:=' where '||wherecase;
      end if;
      --判断是不是超出索引
      --计算myrows和myPageCount
      --组织一个sql
      v_sql:='select count(*) from '|| tableName || v_wherecase;
      --执行sql,并把返回的值赋给myrows;
      execute immediate v_sql into myrows;
      --计算myPageCount
      if mod(myrows,Pagesize)=0 then
        myPageCount:=myrows/Pagesize;
      else
        myPageCount:=trunc(myrows/pagesize)+1;
      end if;
      if pageNow>mypageCount then
      v_begin:=(mypageCount-1)*pagesize+1; --开始记录
      v_end:=mypageCount*pageSize;         --结束记录
      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;
      --nvd:=v_sql;
      --把游标和sql关联
      open p_cursor for v_sql;
      --关闭游标
      --close p_cursor;
    end AspNetOraclePager;

  • 相关阅读:
    通过securecrt跳板机登录linux服务器
    python2.x提示这个错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position
    使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
    linux 中文乱码解决
    工作中常用到的命令
    LR学习文档整理
    Django入门示例之被解放的姜戈——02 庄园疑云(数据库及模型)
    Django入门示例之被解放的姜戈——01 初试天涯(安装及启动)
    格式化字符串format函数
    Python之print 格式化输出
  • 原文地址:https://www.cnblogs.com/rengke2002/p/6626599.html
Copyright © 2011-2022 走看看