【发布时间】:2017-08-04 04:10:31
【问题描述】:
是否可以在 ORACLE WITH CLAUSE 中使用 ref_cursor。例如,我有以下场景。首先我有一个返回 ref_cursor 的过程
PROCEDURE p_return_cursor(p_id IN NUMBER, io_cursor OUT t_cursor)
AS
BEGIN
OPEN io_cursor FOR
SELECT col1, col2
FROM Table1 t
WHERE t.id = p_id;
END;
其次,我有另一个过程调用 p_return_cursor:
PROCEDURE p_test(p_cid IN NUMBER)
AS
l_cursor t_cursor;
l_rec Table1%ROWTYPE;
BEGIN
p_return_cursor(p_id => p_cid, io_cursor => l_cursor);
-- CODE GOES HERE
...
现在,我的问题是,我可以使用 Oracle 的 WITH CLAUSE 使用游标创建一个临时表吗?类似:
...
WITH data AS (
LOOP
FETCH l_cursor INTO l_rec;
EXIT WHEN l_cursor%NOTFOUND;
SELECT l_rec.col1, l_rec.col2 FROM DUAL;
END LOOP;
CLOSE l_cursor;
)
【问题讨论】:
-
WITH是SQL的一部分,而不是PL/SQL。