【发布时间】:2012-07-25 17:45:54
【问题描述】:
我面前有这样一段代码:
FOR row IN 1..l_RowSet(1).count
LOOP
l_a_variable := l_RowSet(1)(row);
END LOOP;
l_RowSet 是 ApEx 类型 -- apex_plugin_util.t_column_value_list -- 定义如下:
type t_column_value_list is table of wwv_flow_global.vc_arr2 index by pls_integer;
其中wwv_flow_global.vc_arr2 定义为
type vc_arr2 is table of varchar2(32767) index by binary_integer;
vc_arr2 从apex_plugin_util.get_data 函数传回我的代码。 vc_arr2 由 column 编号索引,而不是按行。
尽我所能,这意味着数据有效地存储在二维数组中,按列索引,然后按行索引。
当使用 LOOP 语句时,它是从零开始索引还是从一开始?因为在我看来,我应该能够使那个 LOOP 变得多余,即:
l_a_variable := l_RowSet(1)(1);
但我需要提前知道是否将 0 或 1 作为初始行。
我在 Oracle 文档中找不到明确的答案(不出所料,“索引”是一个相当广泛使用的术语),通过 SO 也没有看到其他人有同样的问题。
【问题讨论】:
-
PL/SQL 没有名为“数组”的概念。它有两种(或三种,取决于您选择计算的内容)类似于“数组”的数据类型(例如,“数组”在 C 或 FORTRAN 中定义):关联数组和 VARRAY。 (或者您也可以选择在这里计算 NESTED TABLE)。您正在查看的类型是关联数组。然而,真正像“数组”的数据类型是 PL/SQL 中的 VARRAY。 VARRAY 索引是从 1 开始,而不是从 0 开始。关联数组甚至没有“从”某物索引的概念;它们只是......好吧......关联数组。
标签: oracle plsql oracle-apex