我面前有一段这样的代码:
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 按列号索引,而不是按行索引。尽我所能,这意味着数据有效地存储在二维数组中,按列索引,然后按行索引。
使用 LOOP 语句时,是从 0 还是从 1 索引?因为在我看来,我应该能够使该 LOOP 变得多余,即:
l_a_variable := l_RowSet(1)(1);
但是我需要提前知道是将 0 还是 1 作为初始行。
我在 Oracle 文档中找不到明确的答案(不出所料,“索引”是一个相当广泛使用的术语),并且通过 SO 浏览也没有发现其他人也有相同的问题。
最佳答案
关联数组不一定是密集的。索引 0 处可能有一个元素,索引 -1 处可能有一个元素,索引 1 处可能有一个元素。或者您可能在索引 17、42 和 127 处有元素。您发布的代码暗示关联数组是密集的,索引从 1 开始。
在apex_plugin_util.get_data
的具体情况下集合应该是密集的并且应该从 1 开始。如果循环实际上除了你发布的内容之外没有做任何事情,你可以通过获取 l_RowSet(1)
的最后一个元素来替换它。 , IE。
l_a_variable := l_RowSet(1)(l_RowSet(1).count);
关于oracle - Oracle PL/SQL 数组的索引是从 0 还是从 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681166/