Oracle存储过程返回游标实例详解

 更新时间:2012年12月05日 14:46:00   作者:  
Oracle存储过程返回游标有两种实现方法一种是声明系统游标,一种是声明自定义游标,本文将详细介绍,需要了解的朋友可以参考下
有俩种方法:
一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为
in out 或out
(1)声明个人系统游标.(推荐)
复制代码 代码如下:

create or replace p_temp_procedure
(
cur_arg out sys_refcursor; --方法1
)
begin
open cur_arg for select * from tablename;
end

调用
复制代码 代码如下:

declare
cur_calling sys_refcursor;
begin
p_temp_procedure(cur_calling); --这样这个游标就有值了
for rec_next in cur_calling loop
....
end loop;
end;

(2)在包头中申明一个游表类型,然后调用者申明一个这个类型的游标变量,传给返回游标的存储过程 ,存储过程out这个结果集,这种方法很麻烦.游标类型不能像索引表一样使用create or replace type方法来创建,所以只能在包中申明,并且需要使用/来执行,后面的存储过程才认这个游标类型.(不推荐,但是建议要知道并且要会这种方式,毕竟它有它存在的道理)
复制代码 代码如下:

--定义全局变量
create or replace package pkg_package
as
type type_cursor is ref cursor;
type type_record is record
(
test01 varchar2(32),
test02 varchar2(32),
test03 varchar2(32)
);
end;

--创建返回游标的存储过程
复制代码 代码如下:

create or replace procedure p_temp_procedure
(
cur_out_arg out pkg_package.type_cursor
)
is
begin
open cur_out_arg for select * from test;
end;

--调用
复制代码 代码如下:

declare
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
begin
p_temp_procedure(cur_out_arg);
fetch cur_out_arg into rec_arg;
dbms_output.put_line(rec_arg.test01);
dbms_output.put_line(rec_arg.test02);
dbms_output.put_line(rec_arg.test03);
end;

相关文章

  • Oracle在Mybatis中SQL语句的配置方法

    Oracle在Mybatis中SQL语句的配置方法

    这篇文章主要介绍了Oracle在Mybatis中SQL语句的配置 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 处理Oracle 监听文件listener.log问题

    处理Oracle 监听文件listener.log问题

    这篇文章主要介绍了处理Oracle 监听文件listener.log问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 整理汇总Oracle常用命令 方便你我他

    整理汇总Oracle常用命令 方便你我他

    想统一整理Oracle中常用的命令语句,以后遇到,会不断更新此博客中。为了以后方便查询,因此整理此博客中
    2012-11-11
  • 使用工具 plsqldev将Excel导入Oracle数据库

    使用工具 plsqldev将Excel导入Oracle数据库

    这篇文章主要介绍了使用工具 plsqldev将Excel导入Oracle数据库,需要的朋友可以参考下
    2014-08-08
  • 数据库表分割技术浅析(水平分割/垂直分割/库表散列)

    数据库表分割技术浅析(水平分割/垂直分割/库表散列)

    数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.接下来将对以上分割进行详细介绍,感兴趣的朋友可以了解下,对你日后维护数据库是很有帮助的
    2013-01-01
  • 麒麟V10更换OpenJDK为Oracle JDK的方法

    麒麟V10更换OpenJDK为Oracle JDK的方法

    这篇文章主要介绍了麒麟V10更换OpenJDK为Oracle JDK,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Oracle修改默认的时间格式的四种方式

    Oracle修改默认的时间格式的四种方式

    这篇文章主要介绍了Oracle修改默认的时间格式的四种方式,默认的日期和时间格式由参数NLS_DATE_FORMAT控制,如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现,需要的朋友可以参考下
    2024-06-06
  • 一文解析ORACLE树结构查询

    一文解析ORACLE树结构查询

    这篇文章主要介绍了一文解析ORACLE树结构查询,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 深入ORACLE迁移到MYSQL的总结分析

    深入ORACLE迁移到MYSQL的总结分析

    本篇文章是对ORACLE迁移到MYSQL进行了详细的总结与分析,需要的朋友参考下
    2013-06-06
  • ORACLE常用数值函数、转换函数、字符串函数

    ORACLE常用数值函数、转换函数、字符串函数

    本文并不准备介绍全部的oracle函数,当前情势下,俺也还没这个时间,需要学习的东西太多了,要把多数时间花在学习经常能用上的技术方面:),所以如果是准备深入了解所有oracle函数的朋友,还是去关注:Oracle SQL Reference官方文档更靠谱一些。
    2009-11-11

最新评论