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...