首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何存储返回sysrefcursor的函数的结果?

如何存储返回sysrefcursor的函数的结果?
EN

Stack Overflow用户
提问于 2017-07-23 17:53:20
回答 1查看 99关注 0票数 0

场景:有一个过程,我们在其中有一个游标。我需要调用一个函数,该函数将从该光标值获取输入并返回SYS_REFCURSOR

我需要将函数结果存储在一个不同的变量/游标中&需要从过程中返回这个值作为out参数。

我使用的是Oracle 11g。

我该如何继续呢?

PFB我的方法:

代码语言:javascript
运行
复制
create or replace procedure prc_test 
    (p_dept_id in number,
    c_detail out sysrefcursor)--need to add extra out parameter
as
     var1 varchar2(200) :=null;

begin
   open c_detail for
     select -1 from dual;
   if p_dept_id is not null then
     open c_detail for
         select emp_no from emp 
          where dept_id=p_dept_id;     
     --i need to retrn value of  'get_emp_dtls' function as out parameter.
   end if;

end procedure;
/

要调用的函数

代码语言:javascript
运行
复制
CREATE OR REPLACE FUNCTION get_emp_dtls
    (p_emp_no IN EMP.EMP_NO%TYPE)
   RETURN SYS_REFCURSOR  
AS
   o_cursor   SYS_REFCURSOR;   
BEGIN
   OPEN o_cursor FOR 
      SELECT 
         ENAME,
         JOB            
       FROM emp
       WHERE EMP_NO = p_emp_no;   
   RETURN o_cursor;
   -- exception part
END;
/
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-23 18:26:43

下面是你的函数,它接受一个varchar2变量并返回一个引用游标(弱类型)。

代码语言:javascript
运行
复制
 CREATE OR replace FUNCTION fn_return_cur(v IN VARCHAR2)
RETURN SYS_REFCURSOR
IS
  c1 SYS_REFCURSOR;
BEGIN
    OPEN c1 FOR
      SELECT 'ABC'
      FROM   dual
      WHERE  'col1' = v;

    RETURN c1;
END;

/  

下面的过程将一个游标值作为参数传递给函数,并将返回的游标作为输出参数传递。

代码语言:javascript
运行
复制
 CREATE OR replace PROCEDURE Pr_pass_out_cur(v_2 OUT SYS_REFCURSOR)
IS
  func_arg  VARCHAR2(3);
  other_arg VARCHAR2(3);
  CURSOR c_2 IS
    SELECT 'ABC' col1,
           'DEF' col2
    FROM   dual;
BEGIN
    LOOP
        FETCH c_2 INTO func_arg, other_arg;

        EXIT WHEN c_2%NOTFOUND;

        v_2 := Fn_return_cur(func_arg);
    END LOOP;
EXCEPTION
  WHEN OTHERS THEN
             NULL;
END;

/  

让我知道你的反馈。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45263749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档