似乎找不到循环遍历 PL/SQL 数组的方法?

Posted

技术标签:

【中文标题】似乎找不到循环遍历 PL/SQL 数组的方法?【英文标题】:Can't seem to find a way to loop through a PL/SQL array? 【发布时间】:2012-03-22 17:38:23 【问题描述】:

我正在尝试这样做:

arrCauses := APEX_UTIL.STRING_TO_TABLE(:P1_CAUSE);
FOR c IN 1..arrCauses.count LOOP
  INSERT INTO DT_EVENT_CAUSE (
  EVENT_ID,
  CAUSE_ID)

  VALUES (
  nextPK, c);
END LOOP;

或者这个

arrCauses := APEX_UTIL.STRING_TO_TABLE(:P1_CAUSE);
FOR c IN arrCauses.first..arrCauses.last LOOP
  INSERT INTO DT_EVENT_CAUSE (
  EVENT_ID,
  CAUSE_ID)

  VALUES (
  nextPK, c);
END LOOP;

问题是...c 始终只是计数,因此如果数组是 1 项,则将插入 1 的 c。如果数组有 3 个项目,则将插入 1、2 和 3 的 c。与数组中的实际值相反。我做错了什么?!

【问题讨论】:

【参考方案1】:

使用索引检索数组中的值:

 VALUES (
 nextPK, arrCauses(c));

而不是

 VALUES (
 nextPK, c);

;)

【讨论】:

以上是关于似乎找不到循环遍历 PL/SQL 数组的方法?的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历具有多列和多行的数组

Pl/Sql 在for循环中打开游标

循环遍历 Oracle PL/SQL 中的表

如何使用 PL/SQL 循环遍历 json 响应?

PL/SQL:循环遍历 XML 列并从重复元素中提取值

pl/sql 循环遍历表并将行的每个条目传递给存储过程