暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何从sys_refcursor中获取一列?

askTom 2018-10-12
355

问题描述

如何从sys_refcursor中获取仅几列并将其作为输入传递给另一个proc?

我有一个proc,它返回sys_refcursor中的结果集。必须将此输出中的列作为输入传递给另一个proc。

例如:

proc_a (名称在varchar2中,详细说明sys_refcursor) -> 这是需要输出的过程。

“详细信息” 中的列是- (Id,部门,mail_id,active_yn)

proc_b (编号中的id,varchar2中的部门,结果编号)-> 输入id和部门将从proc_a的输出 “详细信息” 中获得。

专家解答

我不知道从游标变量中获取列的子集的方法。如果你想要更多或更少的列,你应该改变光标定义。

如果您想简化代码,可以使用与游标具有相同结构的记录变量。并引用您想要的属性:

create table t (
  c1 int, c2 int
);

insert into t values ( 1, 2 );
commit;

declare
  cur sys_refcursor;
  rec t%rowtype;
begin
  open cur for 
    select * from t;
    
  fetch cur into rec;
  
  dbms_output.put_line ( 'C1 = ' || rec.c1 );
    
  close cur;
end;
/

C1 = 1
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论