В этом учебном материале вы узнаете, как использовать метод коллекций COUNT в Oracle PL/SQL с синтаксисом и примерами.
Описание
В Oracle PL/SQL метод COUNT - это функция, которая возвращает количество элементов в коллекции (игнорируя удаленные элементы, даже если DELETE хранит для них заполнители).
Синтаксис
Синтаксис метода коллекций COUNT в Oracle PL/SQL.
Параметры или аргументы
collection_name - имя коллекции.
COUNT - возвращает количество элементов в коллекции
Примечание
- Смотрите также методы коллекций: DELETE, TRIM, EXTEND, EXISTS, FIRST и LAST, LIMIT, PRIOR и NEXT.
Пример
Рассмотрим некоторые примеры, чтобы понять как использовать метод коллекций COUNT в Oracle PL/SQL.
Метод COUNT для Varray
Для Varray COUNT всегда равно LAST. Если вы увеличиваете или уменьшаете размер Varray (с помощью метода EXTEND или TRIM), значение COUNT изменяется.
В примере ниже показаны значения COUNT и LAST для Varray после инициализации четырьмя элементами после EXTEND (3) и после TRIM (5).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
DECLARE TYPE NumList IS VARRAY(10) OF INTEGER; n NumList := NumList(1,3,5,7); PROCEDURE print_count_and_last IS BEGIN DBMS_OUTPUT.PUT('n.COUNT = ' || n.COUNT || ', '); DBMS_OUTPUT.PUT_LINE('n.LAST = ' || n.LAST); END print_count_and_last; BEGIN print_count_and_last; n.EXTEND(3); print_count_and_last; n.TRIM(5); print_count_and_last; END; Результат: n.COUNT = 4, n.LAST = 4 n.COUNT = 7, n.LAST = 7 n.COUNT = 2, n.LAST = 2 |
Метод COUNT для Nested Tables
Для Nested Tables (вложенной таблицы) COUNT равно LAST, если вы не удаляете элементы из середины Nested Tables, и в этом случае COUNT меньше LAST.
В примере ниже показаны значения COUNT и LAST для Nested Tables после инициализации четырьмя элементами, после удаления третьего элемента, и после добавления двух нулевых элементов в конец. Пример отображает состояние элементов с 1 по 8.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
DECLARE TYPE NumList IS TABLE OF INTEGER; n NumList := NumList(1,3,5,7); PROCEDURE print_count_and_last IS BEGIN DBMS_OUTPUT.PUT('n.COUNT = ' || n.COUNT || ', '); DBMS_OUTPUT.PUT_LINE('n.LAST = ' || n.LAST); END print_count_and_last; BEGIN print_count_and_last; n.DELETE(3); -- Удалит третий элемент print_count_and_last; n.EXTEND(2); -- Добавит в конец два нулевых элемента print_count_and_last; FOR i IN 1..8 LOOP IF n.EXISTS(i) THEN IF n(i) IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE('n(' || i || ') = ' || n(i)); ELSE DBMS_OUTPUT.PUT_LINE('n(' || i || ') = NULL'); END IF; ELSE DBMS_OUTPUT.PUT_LINE('n(' || i || ') does not exist'); END IF; END LOOP; END; Результат: n.COUNT = 4, n.LAST = 4 n.COUNT = 3, n.LAST = 4 n.COUNT = 5, n.LAST = 6 n(1) = 1 n(2) = 3 n(3) does not exist n(4) = 7 n(5) = NULL n(6) = NULL n(7) does not exist n(8) does not exist |