Oracle預存程序–分頁

來源:互聯網
上載者:User

CREATE OR REPLACE PACKAGE BODY "P_PAGE"   is
 Procedure Per_QuickPage
  (
  TbName         in   varchar2,           --表  名
  FieldStr       in   varchar2,               --欄位集
  RowFilter      in   varchar2,             --過濾條件
  SortStr        in   varchar2,                --排序集
  PageSize       in   number,        --分頁大小
  PageIndex      in   number,        --頁碼
  TotalCount     out  number,           --總記錄數
  Cur_ReturnCur  out  T_CURSOR
  )
  is
  v_SourceTb1    varchar2(32000);      --動態表名1
  v_SourceTb2    varchar2(32000);      --動態表名2
  v_SourceTb3    varchar2(32000);      --動態表名3
  v_SourceTb4    varchar2(32000);      --動態表名4
  v_TotalCount   varchar2(50);           --總記錄數
  v_sql          varchar2(32000);              --動態sql
  MaxRowNum      number;
  MinRowNum      number;
  begin
  if (PageIndex=0) then
    MinRowNum := 0;
  else
   MinRowNum := (PageIndex-1)*PageSize;
  end if;

  MaxRowNum := MinRowNum+PageSize;
  v_SourceTb1 := '(select '|| FieldStr ||' from '|| TbName ||') SourceTb1';
  v_SourceTb2 := '(select * from '|| v_SourceTb1 ||' where '|| RowFilter ||' '|| SortStr ||') SourceTb2';
  v_SourceTb3 := '(select rownum as RowIndex,SourceTb2.* from '|| v_SourceTb2 ||' ) SourceTb3';
  v_SourceTb4 := '(select * from '|| v_SourceTb1 ||' where '|| RowFilter ||') SourceTb4';
  v_sql       := 'select count(*) as TotalCount from '|| v_SourceTb4;
  execute immediate v_sql into v_TotalCount;
  TotalCount  := v_TotalCount;
  v_sql       := 'select * from '|| v_SourceTb3 ||' where RowIndex >'|| MinRowNum ||' And RowIndex<='|| MaxRowNum;
  open Cur_ReturnCur for v_sql;
  end Per_QuickPage;
END P_page;

===============================
create or replace package P_page is
  TYPE T_CURSOR IS REF CURSOR;
  Procedure Per_QuickPage
  (
  TbName         in   varchar2,           --表  名
  FieldStr       in   varchar2,               --欄位集
  RowFilter      in   varchar2,             --過濾條件
  SortStr        in   varchar2,                --排序集
  PageSize       in   number,        --分頁大小
  PageIndex      in   number,        --頁碼
  TotalCount     out  number,           --總記錄數
  Cur_ReturnCur  out  T_CURSOR
  );
end P_page;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.