Oracle萬能分頁法的預存程序
Oracle萬能分頁法的預存程序
--建立一個包,在包中定義一個 遊標類型
create or replace package testfenyepackage as
type test_cursor is ref cursor ;
end testfenyepackage;
--編寫分頁的過程
create or replace procedure fenyeTest
(
tableName varchar2,--表名
pageSize number,--每頁顯示的數目
pageNow number,--當前的頁數
Outrows out number,--返回總記錄數
pagecount out number,--總頁數
p_cursor out testfenyepackage.test_cursor--返回的記錄集
)
as
--定義部分
--第一一個sql語句的字串
v_sql varchar2(1000);
--定義分頁的開始結束的整數變數
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;
begin
--執行部分
v_sql:='select * from (select t1.*, rownum rn from (select * from '||tableName||')t1
where rownum<='||v_end||') where rn >='||v_begin;
--把遊標和sql相關聯
open p_cursor for v_sql;
--計算Outrows pagecount
--組織一個 sql語句
v_sql:='select count(*) from '||tableName;
--執行sql並把返回的結果賦值給Outrows
execute immediate v_sql into Outrows;
--計算頁數
if mod(Outrows,pageSize)=0 then
pagecount:=Outrows/pageSize;
else
pagecount:=Outrows/pageSize+1;
end if;
end;
Java中用JDBC調用Oracle預存程序和函數
Oracle預存程序本地編譯方式
Oracle 預存程序及REF CURSOR的使用
Oracle預存程序中提示“許可權不足”的解決辦法
Oracle利用預存程序返回結果集開發報表
Oracle預存程序中暫存資料表的提示