当前位置:  数据库>oracle

Oralce 写一个分页的存储过程

    来源: 互联网  发布时间:2017-05-14

    本文导语: 有返回值的存储过程(列表 结果集) 案例:编写一个过程,输入部门编号,返回该部门所有员工的信息。对该题的分析如下:由于Oracle的存储过程没有返回值,它的所有返回值都是通过out参数来代替的,列表同样也不例外,但...

有返回值的存储过程(列表 结果集)
 案例:编写一个过程,输入部门编号,返回该部门所有员工的信息。对该题的分析如下:
由于Oracle的存储过程没有返回值,它的所有返回值都是通过out参数来代替的,列表同样也不例外,但是由于是集合,所以不能用一般的参数,必须要用package,所以分两部分:

1)建一个包。如下:

create or replace package testpackage AS TYPE test_cursor

is ref cursor;
end testpackage;

在该包中我定义了一个游标类型  test_cursor

下面就是写创建过程了
create or replace procedure chenchuang_pro
(chenNo in number p_cursor out testpackage.test_cursor) is
begin
open p_cursor for select * from emp wheredeptno-chenNo;
end;


---------------------------------------------------------
要求,编写一个存储过程,要求可以输入表名,每页显示记录数,当前页,返回总记录数,总页数,和返回结果集。(也就是写一个

分页的存储过程)

Oracle 的分页:
在分页的时候,把下面的sql语句当作模板使用

select * from (select t1.* , rownum rn from (select * from

emp)t1 where rn=6


--开始编写分页的过程


先写一个包
create or replace package testpackage AS TYPE test_cursor

is ref cursor;
end testpackage;

 

created or replace procedure fenye
(tableName in varchar2,
  PageSize in number;--每页显示的数据量
  PageNow in number;--当前的页码
  myRows out number;--总记录数
  myPageCount out number;--中页数
  P_cursor out testpackage.test_cursor-- 返回的记录集
) is
-- 定义部分
---定义sql语句
  v_sql varchar2(1000);
  v_begin number:=(PageNow-1)*PageSize+1;--分页算法
  v_end number :=PageNow*PageSize;
begin
--执行部分
  v_sql:='select * from (select t1.* , rownum rn from (select * from '|| tableName||')t1 where rn='||v_begin;
--把游标和sql关联
open p_cursor for v_sql;
--计算MyRows 和MyJpageCount
--组织一个sql
v_sql:='select count(*) from '|| tableName
--执行sql,并把返回值 赋给MyRows
excute immediate v_sql into MyRows;
--计算myPageCount
if mod (myRows,PageSize )=0 then
  myPageCount:=myRows/PageSize;
 else myPageCount:=myRows/PageSize+1;
end if ;
--关闭游标
close p_cursor;

end


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 寻找oralce7.3的driver
  • 与oralce数据库连接?
  • 在ORALCE中怎样取得天数的差值?
  • 安装oralce后如何启动database configuration assitant?
  • 请问用ORALCE建一个库,在网页上的连接直接访问这个库,怎么构建?100分
  • Oralce的环境变量设置,谢谢!!
  • 安装oralce报告硬盘空间不足...
  • 用oci连接oralce问题
  • 提取oralce当天的alert log的shell脚本代码
  • 在linux RedHat5.0 64bit下安装oralce 10g 为什么会出现这样的问题---急!
  • 设置oralce自动内存管理执行步骤
  • 请推荐一本讲unix/linux c/c++ 数据库DB2/Oralce/sysbase等 开发方面的书或资料
  • 刚装好了RH9,想再装Oralce 9i,想问一下关于空间分配的问题?
  • 请教:oralce的class12.zip应放在jbuild的哪个路径下才能被认可?
  • Oralce 归档日志开启与关闭示例
  • 安装Oralce问题,在线等待……
  • Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,