Oracle存儲過程,中涉及到分頁時,我建議你用Java代碼來調用Oracle存儲過程,如果你是Oracle的熱捧者。那麼下面的文章對於你而言一定很有意義。以下的文章就是對相關內容的描述。
create table emp(
- id int,
- ename varchar2(30),
- sale number(7,2)
共7位最大就是這樣的數據
)
開發一個包-
- create or replace package testpackage as
- type test_cursor is ref cursor;
- end testpackage;
開始寫分頁的過程
- create or replace procedure fenye
- (tableName in varchar2,
- pagesizes in number,
一頁顯示記錄
- pageNow in number,
- myrows out number,
總記錄數
- myPageCount out number,
總頁數
- p_cursor out testpackage.test_cursor
返回的記錄集
)is
定義變量
定義sql語句 字符串-
- v_sql varchar2(1000);
定義sql長度
定義兩個整數
- v_begin number:=(pageNow-1)*pagesizes+1;
- v_end number:=pageNow*pagesizes;
開始執行-
- v_sql:='select * from
- (select t1.*,rownum rn from ( select * from '||tableName||' order by sale) t1 where rownum<='||v_end||')
- where rn>='||v_begin;
把游標和sql關聯
- open p_cursor for v_sql;
計算myrows和mypageCount,組織了一個sql 語句
- v_sql:='select count(*) from '||tableName;
執行sql,並把返回的值,賦給 myrows
- execute immediate v_sql into myrows;
執行字符串的sql語句 必須格式,計算mypageCount
- if mod(myrows,pagesizes)=0 then
- myPageCount:=myrows/pagesizes;
- else
- myPageCount:=myrows/pagesizes+1;
- end if;
關閉游標
- close p_cursor;-
必須關閉游標,不是不能釋放占有的空間,這很重要
- end;
以上文章就是使用Java代碼 調用Oracle 存儲過程的描述。