oracle - Oracle PL/SQL 数组的索引是从 0 还是从 1?

标签 oracle plsql oracle-apex

我面前有一段这样的代码:

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_arr2apex_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/

相关文章:

sql - H2 中的分层查询

xml - Temenos T24 如何存储数据

oracle - 错误 "ORA-00932: inconsistent datatypes: expected - got CLOB"选择连接多个表

oracle - 执行用户定义的统计函数时如何提高 Oracle 性能?

sql - oracle如何获取最新的员工记录?

sql - 从不同的模式调用包内的 Oracle 过程?

sql - 使用临时表复制一行的开销值得吗?

javascript - 在 Oracle APEX Interactive Report 中根据过滤器更新页面项

满足多个条件时,Oracle APEX 显示按钮

sql - 从 Oracle 中的逗号分隔变量中删除重复值