oracle中使用儲存過程實現分頁

2021-07-09 09:05:19 字數 1519 閱讀 4344

oracle中使用儲存過程實現分頁

--編寫分頁儲存過程

--(要求可以輸入表名稱,每頁顯示的記錄數,當前頁,返回總記錄數,總頁數,和結果集)

--1定義乙個包在包中定義游標儲存結果集。

create package fenye_package is

type ref_cursor is ref cursor;

--type fenye_record is record(current_page number,result_set ref_cursor);

end;

--儲存過程實現分頁

create or replace procedure fenye_procedure(table_name in varchar2,page_record_num in number,current_page in number,

all_record_num out number,all_page out number,result_set out fenye_package.ref_cursor)is

v_temp1 number(5,1);

v_temp2 number(5,1);

v_begin_record number(5);

v_end_record number(5);

v_sql varchar2(1000);

begin

v_sql:='select count(*) from '|| table_name;

execute immediate v_sql into all_record_num;

v_temp1:=all_record_num/page_record_num;

v_temp2:=mod(all_record_num,page_record_num);

if v_temp2<>0 then

all_page:=v_temp1+1;

else all_page:=v_temp1;

end if;

v_begin_record:=(current_page-1)*page_record_num+1;

v_end_record:=v_begin_record+page_record_num-1;

if current_page=all_page then

v_end_record:=all_record_num;

else v_end_record:=v_begin_record+page_record_num-1;

end if;

v_sql:='select * from (select a1.*,rownum rn from (select *from '||table_name||') a1 where rownum<='||v_end_record||') where rn>='||v_begin_record;

open result_set for v_sql;

end;

Oracle中使用儲存過程實現幾個例項 入門級

剛開始我也不會寫oracle的儲存過程,以前頂多用過sqlserver,工作時偶爾要處理上萬條的資料,有時候不得不手動處理,有時候,可以想辦法使用工具解析匯入資料庫,雖然儲存過程不能很好的處理海量資料,這只是我業餘看到就學習總結了一下。由淺入深的實現了幾個例項,看完了,就可以簡單的掌握oracle儲...

C 中使用Oracle 儲存過程筆記

c 中使用oracle 儲存過程筆記 1.呼叫包含out in out型別引數的儲存過程 儲存過程 flag out integer out 只具備輸出功能 in out 為輸入 輸出型 呼叫方法 oracleparameter retpar new oracleparameter channeli...

hibernate中使用儲存過程

hibernate中使用儲存過程 如果底層資料庫 如oracle 支援儲存過程,也可以通過儲存過程來執行批量更新。儲存過程直接在資料庫中執行,速度更加快。在oracle資料庫中可以定義乙個名為batchupdatestudent 的儲存過程,如下 create or replace procedur...