Учитывая это:
DECLARE
TYPE T_ARRAY IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
MY_ARRAY T_ARRAY;
V_COUNT INTEGER;
Я хотел бы сделать:
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;
Есть ли что-то лучше, чем создание процедуры, выполняющей основной цикл, увеличивающий счетчик? Может быть, встроенная функция PL / SQL уже делает это COUNT_ELEMENTS()
?
В случае Nested-Table (т.е. без
INDEX BY BINARY_INTEGER
) вы также можете использовать CARDINALITYВажное отличие: в случае Nested-Table, который имеет значение NULL,
COUNT
вызывает исключение,CARDINALITY
возвращает NULL.источник
источник
Основной метод:
источник