程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle存儲過程分頁

oracle存儲過程分頁

編輯:Oracle數據庫基礎

一、定義包 



create or replace package pg is

  -- Author  : gjr
  -- Created : 
  -- Purpose : 
  
  -- Public type declarations
  TYPE T_CURSOR IS REF CURSOR;
  --分頁
  PROCEDURE GetPageData(
      pageIndex integer,          --當前頁
      pageSize integer,       --每頁記錄數
      tableName varchar2,     --表名     
      query varchar2,         --where語句 和 order by 語句
      totalCount out  number, --總記錄數
      v_cur out T_CURSOR      --返回當前頁數據記錄  

) ;
end pg;

 

二、定義包體



create or replace package body pg is

  -- Author  : gjr
  -- Created : 
  -- Purpose : 分頁
   PROCEDURE GetPageData( 
      pageIndex integer,         --當前頁
      pageSize integer,      --每頁記錄數
      tableName varchar2,    --表名      
      query varchar2,        --where語句 和 order by 語句
      totalCount out number, --總記錄數
      v_cur out T_CURSOR     --返回當前頁數據記錄  
 ) 
AS 

v_sql VARCHAR2(5000); 
v_Plow number; 
v_Phei number; 
Psql varchar2(5000);
p_sql varchar2(5000);
v_tmp varchar2(5000);
v_TotalCount   varchar2(50);  --總記錄數
Begin 

--------------------------------顯示任意頁內容 
v_Phei := pageIndex* pageSize  ; 
v_Plow := v_Phei - pageSize + 1; 
p_sql:=''select t.* from ''|| tableName ||'' t where 1=1 ''||query||'' '' ; --要求必須包含rownum字段 
Psql := ''select rownum rn,a.* from (''|| p_sql ||'') a '';
v_sql := ''select * from ('' || Psql || '') where rn between '' || v_Plow || '' and '' || v_Phei; 

v_tmp := ''select count(*) as TotalCount from (''|| p_sql ||'') a '';
execute immediate v_tmp into v_TotalCount;
totalCount  := v_TotalCount;

open v_cur for v_sql; 

End GetPageData; 
end pg;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved