1

如果我写一个简单的函数doSomething,我可以通过执行得到它的结果:

select doSomething() from dual;

但是,如果我希望调用一个将OUT游标传递给它的过程(以及另一个 int 参数),我如何在查询中调用该过程并访问游标的结果?

在查询中调用它不是强制性的。它只是我想访问该过程的结果

4

2 回答 2

1

您可以创建一个像

    CREATE OR REPLACE PROCEDURE your_procedure(out_cursor OUT sys_refcursor)
    IS
    BEGIN
        OPEN out_cursor FOR
            SELECT  employee_name
              FROM  employees;

    END;
    /

创建过程后,将过程包装在一个返回光标的函数中,如下所示

CREATE OR REPLACE FUNCTION your_function
    RETURN sys_refcursor
AS
    o_param  sys_refcursor;
BEGIN
    o_param := NULL;
    your_procedure(o_param);
    RETURN o_param;
EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
        -- raise                                  

    WHEN OTHERS
    THEN
        -- raise
END your_function;
/

要查看 sql 的结果,请执行以下操作

select your_function from dual;

更新 1

在 SQL Developer 中查看结果

第1步

在 SQL Developer 中双击结果

[结果][1]

第 2 步单击带点的按钮。这将弹出值

[网格][2]

于 2012-11-12T08:07:25.880 回答
0

你可以做这样的事情

select doSomething(cursor (select int_col from your_table)) colname from dual

希望这个帮助

于 2012-11-12T07:47:06.617 回答