tengo frente a mí un pedazo de código como este:¿Las matrices Oracle PL/SQL están indexadas desde 0 o desde 1?
FOR row IN 1..l_RowSet(1).count
LOOP
l_a_variable := l_RowSet(1)(row);
END LOOP;
l_RowSet
es un tipo ApEx - apex_plugin_util.t_column_value_list
- se define así:
type t_column_value_list is table of wwv_flow_global.vc_arr2 index by pls_integer;
donde wwv_flow_global.vc_arr2
se define como
type vc_arr2 is table of varchar2(32767) index by binary_integer;
El vc_arr2
se devuelve a mi código desde la función apex_plugin_util.get_data
. El vc_arr2 está indexado por columna número, no por fila.
Lo mejor que puedo entender es que los datos se almacenan efectivamente en una matriz 2D, indexada por columna y luego por fila.
Al utilizar la instrucción LOOP, ¿se indexaría desde cero o desde uno? Porque me parece que debería ser capaz de hacer que Lazo redundante, es decir:
l_a_variable := l_RowSet(1)(1);
Pero que había necesidad de saber de antemano si va a dar 0 o 1 como la fila inicial.
No puedo encontrar una respuesta clara en los documentos de Oracle (como era de esperar, "índice" es un término bastante utilizado) y un vistazo a SO no muestra a nadie más con la misma pregunta.
Gracias. He actualizado la pregunta para explicar mejor qué hace get_data. It * is * a 2D collection, por column then row. Dado que las matrices PL/SQL pueden ser dispersas, tendré que cavar un poco más para ver lo que me está devolviendo "en vivo". –
@JacquesChester - 'apex_plugin_util.get_data' devuelve una colección de tipo' t_column_value_list' que es una matriz multidimensional. Actualicé la pregunta y eliminé la discusión 1D/2D de mi respuesta. –