如果我写一个简单的函数doSomething
,我可以通过执行得到它的结果:
select doSomething() from dual;
但是,如果我希望调用一个将OUT
游标传递给它的过程(以及另一个 int 参数),我如何在查询中调用该过程并访问游标的结果?
在查询中调用它不是强制性的。它只是我想访问该过程的结果
您可以创建一个像
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]
你可以做这样的事情
select doSomething(cursor (select int_col from your_table)) colname from dual
希望这个帮助