oracle - PL/SQL:接收一个数组作为参数并循环遍历它
问题描述
我正在尝试处理从 C++ 代码调用的字符串值数组(单列),并在存储过程中使用 PL/SQL 对其进行迭代。为此,我创建了一个新类型:
CREATE OR REPLACE TYPE "DEVICELIST_OBJTYP" AS OBJECT
(DEVICE VARCHAR2(46 BYTE))
/
CREATE OR REPLACE TYPE devicelist_coltyp AS
TABLE OF devicelist_objtyp;
/
PL/SQL 过程如下所示(删除了看似不相关的逻辑):
PROCEDURE pr_MyProc
( p_UserId IN USERSTAB.USRID%TYPE,
p_DeviceList IN DEVICELIST_OBJTYP,
p_ResCode OUT NUMBER,
p_ResMsg OUT VARCHAR2)
IS
BEGIN
...
FOR i IN 1 .. p_DeviceList.COUNT LOOP
dbms_output.put_line(i);
--more code to follow..
END LOOP;
...
END;
/
当我尝试编译该过程时,我失败了:
Warning: Package Body created with compilation errors.
Errors for PACKAGE BODY PA_HANDLE_ASSETS:
LINE/COL ERROR
-------- -----------------------------------------------------------------
135/17 PL/SQL: Statement ignored
135/44 PLS-00302: component 'COUNT' must be declared
BEGIN
*
ERROR at line 1:
ORA-20002:
ORA-06512: at line 4
我应该如何在不提供 .COUNT 属性的情况下迭代嵌套表对象?当我尝试不使用 .COUNT 时,我在 ~“p_DeviceList 不是光标”行中出错了。我应该将 p_DeviceList 对象转换为另一种类型的数据吗?
解决方案
推荐阅读
- reactjs - 使用带有连接组件的酶试图模拟点击时出现问题
- python - 如何通过迭代成批的数组来创建多维结果
- python - 在使用 .namespace_map 时,在输出 xml 中,它在使用该前缀的标记末尾添加 url 作为属性
- html - 当元素可见时,容器会丢失上边距
- java - 无法安装断点
$$$view59 由于缺少行号属性。原因:缺少行号信息 - jquery - 无法使用 jQuery 可靠地隐藏和显示元素
- elasticsearch - 与 istio 代理的弹性搜索彼此断开连接
- python - Flask Web 应用程序:Google 饼图未显示在 html 输出中
- r - 无法在 quantreg 中使用 RAM 内存
- mysql - NodeJs & MySql:当表 id 是 UUID 时,results.insertId 总是 0