如果我写一个简单的函数doSomething
,我可以通过执行:
select doSomething() from dual;
但是,如果我希望调用一个传递OUT
游标的过程(以及另一个int参数),如何在查询中调用该过程并访问游标的结果?
在查询中调用它不是强制性的..它只是我想访问该过程的结果
答案 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
希望这个帮助