zoukankan      html  css  js  c++  java
  • PL/SQL编程—分页功能(存储过程)

    SQL> create table t_book(bookid varchar2(3),bookname varchar2(50),publish varchar2(50));
     
    Table created
     
    SQL>
    SQL> create or replace procedure sp_add_book(bookid in varchar2, bookname in varchar2,publish in varchar2) is
      2  begin
      3  insert into t_book values(bookid,bookname,publish);
      4  end;
      5  /
     
    Procedure created
     
    SQL> select * from t_book;
     
    BOOKID BOOKNAME                                           PUBLISH
    ------ -------------------------------------------------- --------------------------------------------------
    1      OracleTestForMine                                  ShenZhenPublish

    SQL> create or replace procedure sp_get_mytest(id_in in varchar2,name_out out varchar2,salary_out out number,bonus_out out number,job_out out varchar2) is
      2  begin
      3  select name,salary,bonus,job into name_out,salary_out,bonus_out,job_out from mytest where id=id_in;
      4  end;
      5  /
     
    Procedure created

    SQL> create or replace package sp_pack_mulityqry as
      2  type p_cursor is ref cursor;
      3  end sp_pack_mulityqry;
      4  /
     
    Package created
     

    --创建一个游标类
    create or replace package sp_pack_pagebycursor as
    type p_cursor is ref cursor;
    end sp_pack_pagebycursor;
    /
     
    --利用存储过程来实现分页功能
    create or replace procedure fenye(
    tablename in varchar2,
    curpage in number,
    pagerownum in number,
    orderflg in varchar2,
    totalrownum out number,
    totalpagenum out number,
    res_cursor out sp_pack_pagebycursor.p_cursor
    ) is
    --定义sql语句变量
    v_sql varchar2(1000);
    --定义查询起始下标
    v_begin_rownum number:=(curpage-1)*pagerownum+1;
    --定义查询结束下表
    v_end_rownum number:=curpage*pagerownum;
    --执行
    begin
    --定义数据库查询sql
    v_sql:='select * from (select t.*,rownum rn from (select * from '||tablename||' order by salary '||orderflg||') t where rownum<='||v_end_rownum||') where rn>='||v_begin_rownum;
    --关联游标和sql
    open res_cursor for v_sql;
    --查询总记录数
    v_sql:='select count(*) from '||tablename;
    execute immediate v_sql into totalrownum;
    --计算总页数
    if mod(totalrownum,pagerownum)=0 then
    totalpagenum:=totalrownum/pagerownum;
    else
    totalpagenum:=totalrownum/pagerownum+1;
    end if;
    end;
    /

     
  • 相关阅读:
    2015年9月29日html基础加强学习笔记
    2015年9月30日html表单笔记
    2015年10月1日登陆界面表单练习
    linux 常用命令
    OSI七层模型与TCP/IP层次模型
    谈谈字符串那点事
    vim 常用命令
    VB Pcode 动态调试要点
    数据类型方法
    join()和fromkeys()的用法与注意事项
  • 原文地址:https://www.cnblogs.com/lingyejun/p/7096698.html
Copyright © 2011-2022 走看看