我需要在数据库中存储一些查询(包中的内部函数),然后从 SQL Developer 调用函数(来自 ORDS),所以我发现您可以从存储的函数中返回 SYS_REFCURSORs 中的查询,如下所示:
CREATE OR REPLACE FUNCTION test RETURN SYS_REFCURSOR AS
vRC SYS_REFCURSOR;
BEGIN
OPEN vRC FOR SELECT *
FROM employees
WHERE empid = 34650;
RETURN vRC;
END;
稍后,只需像这样在 SQL Developer 中检索数据:
SELECT test
FROM dual;
所以我的问题是...
它是否正确?我知道每次我们打开一个游标时,我们都需要显式地关闭它,并且我发现的每个示例都关闭了 PL/SQL 中的 refcursor,并且我需要从 SELECT 语句中获取数据(以便将其解析为 JSON SQL 开发人员)。
我还发现,在 SQLPlus 中,“print”语句在获取所有数据后关闭游标,我的示例中的 SELECT 语句是否也这样做?