Oracle PL / SQL阵列是从0还是从1开始索引?

前端之家收集整理的这篇文章主要介绍了Oracle PL / SQL阵列是从0还是从1开始索引?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我面前有一段这样的代码
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由列号索引,而不是按行索引.

最好的我可以看出这意味着数据有效地存储在2D数组中,按列然后按行索引.

使用LOOP语句时,是从零还是从一个索引?因为在我看来我应该能够使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)的最后一个元素来替换它,即

l_a_variable := l_RowSet(1)(l_RowSet(1).count);

猜你在找的Oracle相关文章