Dado isso:
DECLARE
TYPE T_ARRAY IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
MY_ARRAY T_ARRAY;
V_COUNT INTEGER;
Eu gostaria de fazer:
BEGIN
-- ... some code filling the MY_ARRAY array
-- obviously COUNT_ELEMENTS() does not exists, this is what I'm looking for :-)
V_COUNT := COUNT_ELEMENTS(MY_ARRAY);
DBMS_OUTPUT.PUT_LINE('My array containts ' || V_COUNT || ' elements.');
END;
Existe algo melhor do que criar um procedimento fazendo um loop básico incrementando um contador? Talvez uma função nativa PL/SQL já faça isso COUNT_ELEMENTS()
?
Acho que é isso que você procura:
Felizmente, encontrei no código PL/SQL existente que tenho que manter, um comportamento "nativo" de trabalho:
deve fazer o truque.
Este é muito difícil de encontrar com o Google, já que "count" se refere mais frequentemente ao
SELECT COUNT(...)
que pode ser encontrado em consultas SQL ...No caso de uma tabela aninhada (ou seja, sem
INDEX BY BINARY_INTEGER
) você também pode usar CARDINALIDADEDiferença importante: No caso de Nested-Table que é NULL,
COUNT
gera uma exceção,CARDINALITY
retorna NULL.Um método básico é: