суббота, 17 декабря 2011 г.

Коллекции. Методы. Часть 2


Продолжаю тему методов коллекций в языке PL/SQL. Методов еще много, на пару статей наверно хватит. Декабрь, кстати, уже к концу подходит, так что надо уже упорно думать над тем, как новогодние праздники справлять. Но – это небольшое отступление. Вернемся к методам. Сегодня я расскажу о следующих:

LIMIT
FIRST
LAST

LIMIT:

Данный метод проверяет максимальный размер коллекции. Для вложенных таблиц и ассоциативных массивов, которые не имеют постоянного размера – данный метод вернет значение NULL. Для массивов переменной длины LIMIT возвращает максимальное число элементов, которое может содержать массив. Это число задается при определении типа, поэтому – его изменить во время выполнения программы – нельзя:

DECLARE
TYPE vt IS VARRAY(3) OF VARCHAR2(20);
pt vt := vt('один','два','три');
BEGIN
dbms_output.put_line(TO_CHAR(pt.LIMIT)); --3
pt.DELETE; --очищаю всю коллекцию
dbms_output.put_line(TO_CHAR(pt.LIMIT)); --3
END;

FIRST и LAST:

Эти два метода похожи друг на друга (выполняют одинаковую функцию) – они находят первый (FIRST) и последний (LAST) элемент коллекции, то есть – возвращают наибольшее и наименьшее значение индекса в коллекции.

Если коллекция будет пуста – то методы FIRST и LAST вернут неопределенное значение NULL. Если в коллекции будет всего один элемент, то, логично – оба метода вернут одно и то же значение:

DECLARE
TYPE vt IS TABLE OF VARCHAR2(20);
pt vt := vt('один','два','три');
BEGIN
dbms_output.put_line(pt.FIRST); --1
dbms_output.put_line(pt.LAST); --3
END;

Для массивов переменной длины FIRST всегда возвращает 1, а LAST – то же самое значение, которое возвращает метод COUNT.

Для вложенных таблиц FIRST обычно возвращает 1, и значение LAST обычно равно значению COUNT. Однако, если удалить элементы из начала вложенной таблицы, значение, возвращаемое методом FIRST, будет больше 1. Если же удалить элемент из середины вложенной таблицы, значение LAST будет больше значения COUNT.

DECLARE
TYPE vt IS TABLE OF VARCHAR2(20);
pt vt := vt('один','два','три', 'четыре');
BEGIN
dbms_output.put_line(pt.FIRST); --1
dbms_output.put_line(pt.LAST); --4
pt.DELETE(4);
pt.DELETE(1);
dbms_output.put_line(pt.FIRST); --2
dbms_output.put_line(pt.LAST); --3
END;

То есть, при просмотре коллекции, методы FIRST и LAST игнорируют удаленные элементы.

На этом я закончу на сегодня рассказ второй части о методах коллекций. Еще осталось около половины методов, так что скоро уже все дорасскажу – и можно будет приступить к записям языка PL/SQL. Кстати, хоть тема PL/SQL не очень подходит для детей — хотелось бы спросить, а в вашем городе есть детский магазин? У нас вот таких магазинов (нормальных) нет, сложно купить, например, коляску ребенку. Зато знаю магазин детских колясок в Екатеринбурге — вот горожанам повезло. На сайте посмотрел — коляски отличные, в них должно быть ребенку тепло даже в самый сильный мороз. Да и по глубокому снегу на отлично должны проезжать. Так что если вы из Екатеринбурга — то заходите и выбирайте. А я — пойду свои магазины навещу.

Комментариев нет:

Отправить комментарий