Oracle存儲(chǔ)過(guò)程中分頁(yè),用java代碼來(lái)完成
Oracle存儲(chǔ)過(guò)程,中涉及到分頁(yè)時(shí),我建議你用java代碼來(lái)調(diào)用Oracle存儲(chǔ)過(guò)程,如果你是Oracle的熱捧者。那么下面的文章對(duì)于你而言一定很有意義。以下的文章就是對(duì)相關(guān)內(nèi)容的描述。
create table emp(
- id int,
- ename varchar2(30),
- sale number(7,2)
共7位最大就是這樣的數(shù)據(jù)
)
開(kāi)發(fā)一個(gè)包-
- create or replace package testpackage as
- type test_cursor is ref cursor;
- end testpackage;
開(kāi)始寫分頁(yè)的過(guò)程
- create or replace procedure fenye
- (tableName in varchar2,
- pagesizes in number,
一頁(yè)顯示記錄
- pageNow in number,
- myrows out number,
總記錄數(shù)
- myPageCount out number,
總頁(yè)數(shù)
- p_cursor out testpackage.test_cursor
返回的記錄集
)is
定義變量
定義sql語(yǔ)句 字符串-
- v_sql varchar2(1000);
定義sql長(zhǎng)度
定義兩個(gè)整數(shù)
- v_begin number:=(pageNow-1)*pagesizes+1;
- v_end number:=pageNow*pagesizes;
開(kāi)始執(zhí)行-
- v_sql:='select * from
- (select t1.*,rownum rn from ( select * from '||tableName||' order by sale) t1 where rownum<='||v_end||')
- where rn>='||v_begin;
把游標(biāo)和sql關(guān)聯(lián)
- open p_cursor for v_sql;
計(jì)算myrows和mypageCount,組織了一個(gè)sql 語(yǔ)句
- v_sql:='select count(*) from '||tableName;
執(zhí)行sql,并把返回的值,賦給 myrows
- execute immediate v_sql into myrows;
執(zhí)行字符串的sql語(yǔ)句 必須格式,計(jì)算mypageCount
- if mod(myrows,pagesizes)=0 then
- myPageCount:=myrows/pagesizes;
- else
- myPageCount:=myrows/pagesizes+1;
- end if;
關(guān)閉游標(biāo)
- close p_cursor;-
必須關(guān)閉游標(biāo),不是不能釋放占有的空間,這很重要
- end;
以上文章就是使用java代碼 調(diào)用Oracle 存儲(chǔ)過(guò)程的描述。
【編輯推薦】
- Oracle存儲(chǔ)過(guò)程中不存在返回值的緣由
- 實(shí)現(xiàn)Oracle存儲(chǔ)過(guò)程的實(shí)際應(yīng)用的代碼
- Oracle存儲(chǔ)過(guò)程中應(yīng)注意的事項(xiàng)
- 深入高性能的Oracle動(dòng)態(tài)SQL開(kāi)發(fā)
- Oracle字段的轉(zhuǎn)字符串實(shí)際操作方案