oracle - 从 PROCEDURE BY SELECT 返回 REF CURSOR
问题描述
我需要在选择语句中返回参考光标。我使用下面的代码我需要另一种类型来返回数据。抱歉,我删除了一些输出变量的代码(参考游标中返回的真实列数为14),但需要任何类型来轻松返回数据以检查它是否正常工作。
DECLARE
TYPE rc IS REF CURSOR;
v_cur rc; --declare ref cursor variable
LIST_ID VARCHAR2 (250);
PERSON_NO VARCHAR2 (250);
BEGIN
MOI_SERVICES.HCR_INQUIRIES_PKG.GET_SUSPECTED_LIST_PRC (148608947,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
v_cur,
V_STAUS, -- 0 FAIL -- 1 SUCCESS
V_MSG);
LOOP
FETCH v_cur
INTO LIST_ID,
PERSON_NO;
EXIT WHEN v_cur%NOTFOUND;
DBMS_OUTPUT.put_line (
'LIST_ID = '
||LIST_ID
END LOOP;
CLOSE v_cur;
END;
解决方案
REF CURSOR 的想法是您打开游标,但无论谁打电话给您,都会进行获取和关闭。使用 SQL*Plus 或 Oracle SQL Developer,这里是一个使用匿名 PL/SQL 的简单示例;“打印”命令执行获取、显示和光标关闭。
SQL> var rc refcursor;
SQL> begin
2 open :rc for select * from dual;
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> print :rc
D
-
X
调用函数如下所示:
SQL> create or replace function f return sys_refcursor is
2 l_rc sys_refcursor;
3 begin
4 open l_rc for select * from dual;
5 return l_rc;
6 end f;
7 /
Function F compiled
SQL> exec :rc := f;
PL/SQL procedure successfully completed.
SQL> print :rc;
D
-
X
最好的问候,炖阿什顿
推荐阅读
- webrtc - WebRTC:如何让我的系统可靠地为 5.000 到 10.000 个用户进行一对一视频聊天
- javascript - 需要可观察翻译的 Javascript 承诺
- java - 什么是基于 Windows 的 GUI?
- angular - Angular 8 表单控件 Ng If
- hive - 在 HDP 3.1.4 中使用 kafka-handler 4.0
- elasticsearch - 弹性搜索(Kibana) - 布尔结果之间的相交
- python - python无法导入嵌套模块
- c# - 多个字段的 C# 不可变计数器
- c - 使用双指针向结构输入值时出现问题
- node.js - AWS Lambda 从 Windows 机器上创建的 zip 文件访问节点模块