Oracle_10g数据库基础教程第17章基于Oracle数据库的应用开发.pptVIP

  • 4
  • 0
  • 约6.63千字
  • 约 39页
  • 2017-04-27 发布于四川
  • 举报

Oracle_10g数据库基础教程第17章基于Oracle数据库的应用开发.ppt

Oracle_10g数据库基础教程第17章基于Oracle数据库的应用开发

第17 基于Oracle数据库的应用开发;本章内容;本章要求;17.1 利用PL/SQL实现分页查询;17.1.1 利用集合实现分页查询;CREATE OR REPLACE PACKAGE emppkg IS --定义结果集中每条记录的类型 TYPE t_record IS RECORD( rn INT, empno emp.empno%TYPE, ename emp.ename%TYPE, sal emp.sal%TYPE, deptno emp.deptno%TYPE); --定义保存返回结果集的集合类型 TYPE emplist IS TABLE OF t_record; --定义个实现分页显示的过程 PROCEDURE sp_page( p_pageSize IN OUT INT, --每页输出的记录数 p_curPageNo IN OUT INT, --当前页码 p_outCollection OUT emplist --查询返回当前页数据的集合 ); END;;CREATE OR REPLACE PACKAGE BODY emppkg IS PROCEDURE sp_page( p_pageSize IN OUT INT, --每页输出的记录数 p_curPageNo IN OUT INT, --当前页码 p_outCollection OUT emplist) --查询返回当前页数据的集合 AS v_startRownum NUMBER; v_endRownum NUMBER; v_totalRecords NUMBER; v_totalPages NUMBER; indexValue BINARY_INTEGER :=1; BEGIN --查询记录总数 SELECT count(*) INTO v_totalRecords FROM emp; --验证页面记录数量 IF p_pageSize 0 THEN p_pageSize := 10; END IF; ; --计算总页数 IF MOD(v_totalRecords,p_pageSize)=0 THEN v_totalPages:=v_totalRecords/p_pageSize; ELSE v_totalPages:=floor(v_totalRecords/p_pageSize)+1; END IF; --验证页号 IF p_curPageNo 1 THEN p_curPageNo := 1; END IF; IF p_curPageNov_totalPages THEN p_curPageNo :=v_totalPages; END IF;;;通过对包中分页查询过程的调用,可以根据需要输出特定页的数据。 DECLARE v_pageSize INT :=5; v_curPageNo INT:=2; v_emplist emppkg.emplist; BEGIN emppkg.sp_page(v_pageSize,v_curPageNo,v_emplist); DBMS_OUTPUT.PUT_LINE(The pagesize is :||v_pageSize); DBMS_OUTPUT.PUT_LINE(The current page NO. is :|| v_curPageNo); FOR i IN 1..v_emplist.COUNT LOOP DBMS_OUTPUT.PUT_LINE(v_emplist(i).rn|| || v_emplist(i).empno|| || v_emplist(i).ename); E

文档评论(0)

1亿VIP精品文档

相关文档