调用它时如何访问Oracle过程OUT参数?

时间:2012-11-12 07:43:38

标签: sql oracle plsql oracle10g

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

来得到它的结果
select doSomething() from dual;

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

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

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

你可以做这样的事

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

希望这个帮助