不直接,没有.

SYS_REFCURSOR是指向结果的指针 – 您唯一能做的就是获取数据.您无法修改结果集.

P_PROC2可以从SYS_REFCURSOR获取数据,发出查询以从其他表中获取其他数据,并将某些内容返回给调用者.那时,我倾向于倾向于将P_PROC2转换为流水线表函数.但是您可以返回包含修改后数据的集合.

如果p_proc2绝对需要返回REF CURSOR,则可以将p_proc1的REF CURSOR中的数据提取到全局临时表中,然后在p_proc2中打开一个新的游标,该游标将查询此全局临时表并执行您希望的任何其他操作.就像是

SQL> create global temporary table tmp_emp

2 as

3 select empno, ename, deptno from emp where 1=2;

Table created.

SQL> create or replace procedure p1( p_cur1 out sys_refcursor )

2 as

3 begin

4 open p_cur1 for select * from emp;

5 end;

6 /

Procedure created.

SQL> ed

Wrote file afiedt.buf

1 create or replace procedure p2( p_cur2 out sys_refcursor )

2 as

3 l_cur1 sys_refcursor;

4 l_rec emp%rowtype;

5 begin

6 p1( l_cur1 );

7 loop

8 fetch l_cur1 into l_rec;

9 exit when l_cur1%notfound;

10 insert into tmp_emp( empno, ename, deptno ) values( l_rec.empno, l_rec

ename, l_rec.deptno );

11 end loop;

12 open p_cur2 for

13 select empno, ename, dname

14 from tmp_emp,

15 dept

16 where dept.deptno = tmp_emp.deptno;

17* end;

SQL> /

Procedure created.

SQL> variable rc refcursor;

SQL> exec p2( :rc );

PL/SQL procedure successfully completed.

SQL> print rc

EMPNO ENAME DNAME

---------- ---------- --------------

7839 KING ACCOUNTING

7934 MILLER ACCOUNTING

7782 CLARK ACCOUNTING

7369 smith RESEARCH

7902 FORD RESEARCH

7876 ADAMS RESEARCH

7788 SCOTT RESEARCH

7566 JONES RESEARCH

7900 JAMES SALES

7499 ALLEN SALES

7698 BLAKE SALES

EMPNO ENAME DNAME

---------- ---------- --------------

7654 MARTIN SALES

7844 TURNER SALES

7521 WARD SALES

14 rows selected.

oracle 如何 更改 ref cursor 结果集,oracle – 如何从anther调用一个存储过程并修改返回的refcursor?...相关推荐

  1. oracle无法打开表的行集,Oracle错误ORA-22905:无法访问非嵌套表项中的行

    这是我写入的存储过程.在此proc中,"p_subjectid"是从前端传递的一组数字.Oracle错误ORA-22905:无法访问非嵌套表项中的行 PROCEDURE getsu ...

  2. oracle调用存储过程输出,oracle中存储过程调用存储过程(带有返回结果集)

    在oracle中,存储过程是可以调用存储过程的.其中,被调用的存储过程可以带返回游标的结果集,或者是一个定义的变量,两者都可以,在实现过程中几乎没什么差别.在调用的存储过程,要注意写好对应的游标或者定 ...

  3. oracle is ref cursor java_oracle cursor 用法总结

    PL sql中cursor用法是非常广泛的,常常用于存储过程和函数的返回值,其中用于函数的返回值变相的解决了pl sql 没有表值函数的问题,一般的,在java 调用存储过程,所返回的结果集也是用游标 ...

  4. oracle调用存储过程和函数返回结果集

    视频课:https://edu.csdn.net/course/play/7940 在程序开发中,常用到返回结果集的存储过程,这个在MySQL和sql server 里比较好处理,直接返回查询结果就可 ...

  5. oracle学习-存储过程返回一个值,和返回一个结果集

    一.返回一个值 --创建存储过程create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is beg ...

  6. oracle 序列和表关联,Oracle 创建和管理表、集群和序列

    创建表 1.describe 表名  --查看表结构 定义列的时候变长字符数据类型必须指定最大长度,number可以是最高精度(最高到38位),也可以是指定的精度. 2.字符宽度和数值精度 char列 ...

  7. oracle数据库报300006,Oracle归档日志所在目录时间不对Oracle集群日志时间显示错误...

    Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 前言 这个问题在18 ...

  8. oracle 游标查询数据库,Oracle数据库使用游标查询结果集所有数据

    --Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2(200):=''; --表名 myTableRowComment NVARCHAR2(200): ...

  9. Oracle 每日一题系列合集

    作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,很高兴又和大家见面了 ...

最新文章

  1. Piccure Plus 3.1中文汉化版,Piccure Plus 3.1破解版,模糊照片变清晰神器,让你不再害怕手抖了
  2. Quanta杂志长文翻译:通过信息论判定个体的边界
  3. Kali linux 2016.2(Rolling)中metasploit的端口扫描
  4. HTML控制文本框只能输入数字和小数点,并且只能保留小数点后两位 金额转换,阿拉伯数字的金额转换成 面试题
  5. python3 操作redis
  6. 【剑指offer】包含min函数的栈
  7. 博图os更新_博途TIA安装与更新
  8. netsuite和java_Netsuite - 如何根据项目和位置搜索填充子列表
  9. latex中if语句怎么用_如果 (If) | Python 中的条件控制语句详解
  10. 批量获取客户端时间偏差
  11. 【Spark】SparkStreaming-提交到集群运行
  12. MJRefresh自定义刷新动画
  13. 视频质量评价 VMAF,为何让人又喜又忧?
  14. 2019年网络安全灾难事件,5大勒索病毒软件
  15. php结合phantomjs实现网页截屏、抓取js渲染的页面
  16. 2020年9月中国编程语言排行榜
  17. java hibernate 详解_hibernate详解一
  18. [区块链安全-Ethernaut]附加GoodSamaritan解题思路
  19. 矩阵可逆的条件以及特征值、特征向量与可对角化条件
  20. 亚声速 – 超声速等熵喷管流动 数值模拟(文字)

热门文章

  1. [KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配
  2. ajax之深入解析(2)
  3. 在XML里的XSD和DTD以及standalone的使用
  4. 虚拟机中Linux安装Tools
  5. Leetcode--1028. 从先序遍历还原二叉树(Java)
  6. linux cache buffer区别,Linux buffer/cache异同
  7. 判断表达式值是否为空_如何在 Python 中判断列表是否为空
  8. 读芯片信息出错3_十分钟看懂串口打印信息(1)
  9. 进程同步,异步,互斥
  10. 模式识别与机器学习笔记(一)