Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Для работы с коллекциями всех видов имеется группа методов, обращение к которым записывается как
имя_коллекции.имя_метода [(параметры)]
Методы для коллекций перечисляются ниже:
| Метод коллекции | Описание |
| COUNT [()]1 Функция | Возвращает текущее число элементов в коллекции |
| DELETE [(i [,j])] Процедура | Удаляет из вложенной или индексированной таблицы элемент i или с i-го по j-й. При отсутствии параметров удаляет все элементы (единственно возможный вариант для VARRAY). |
| EXISTS (i) Функция | Выдает TRUE или FALSE в зависимости от существования i-го элемента. Для непроинициализированной вложенной таблицы или массива VARRAY выдает FALSE |
| EXTEND [(n [,i])] Процедура | Добавляет в коллекцию n элементов, инициализируя их значением элемента i. По умолчанию n = 1. |
| FIRST [()]1 Функция | Возвращает наименьший по значению индекс в коллекции. Для пустой проинициализированной коллекции возвращает NULL |
| LAST [()]1 Функция | Возвращает наибольший по значению индекс в коллекции. Для пустой проинициализированной коллекции возвращает NULL |
| LIMIT [()]1 Функция | Для конкретного массива VARRAY возвращает максимально допустимое число элементов. Для вложенных и индексированных таблиц возвращает NULL |
| PRIOR (i) Функция | Возвращает значение индекса, непосредственно предшествующее индексу i. Если i <= FIRST, возвращает NULL |
| NEXT (i) Функция | Возвращает значение индекса, непосредственно следующее за индексом i. Если i >= COUNT, возвращает NULL |
| TRIM (i) Процедура | Удаляет n последних элементов из коллекции. По умолчанию n = 1. Если n равно NULL, процедура ничего не делает. Неприменима к индексированным таблицам |
1 Список параметров всегда пустой, но PL/SQL равно допускает как указание, так и пропуск пустых круглых скобок. Тем не менее указание (хотя и пустых) круглых скобок соответствует правилам объектного подхода, а пропуск – нет.
Все функции, кроме EXIST, возвращают BINARY_INTEGER. Все параметры методов также типа BINARY_INTEGER.
Метод EXIST, примененный к коллекции в состоянии NULL, не вызовет исключительного состояния COLLECTION_IS_NULL.
Примеры использования коллекций в программе
Пример, поясняющий действие методов:
DECLARE
TYPE colours_tab_type IS TABLE OF VARCHAR2 (30);
my_list colours_tab_type:= colours_tab_type (‘RED’, ‘GREEN’, NULL, NULL);
str VARCHAR2 (20);
BEGIN
DBMS_OUTPUT.PUT_LINE (‘my_list has ‘ || my_list.COUNT() || ’ elements’);
my_list.DELETE(2, 3);
DBMS_OUTPUT.PUT_LINE (‘my_list has ‘ || my_list.COUNT() || ’ elements’);
FOR element# IN my_list.FIRST().. my_list.LAST()
LOOP
IF my_list.EXISTS (element#)
THEN
str:= NVL (my_list (element#),’[NULL]’);
ELSE
str:= ‘deleted‘;
END IF;
DBMS_OUTPUT.PUT_LINE (‘Element ‘ || element# || ‘ is ‘ || str || ‘. ‘ ||
‘ Prior = ‘ || NVL (my_list.PRIOR (element#), -1) ||
‘ Next = ‘ || NVL (my_list.NEXT (element#), -1));
END LOOP;
END;
/
Пример множественных операций (начиная с версии 10):
CREATE OR REPLACE TYPE ntt IS TABLE OF NUMBER (4)
/
DECLARE
nt1 ntt;
nt2 ntt;
nt3 ntt;
BEGIN
WITH emps AS (SELECT empno FROM emp WHERE comm IS NOT NULL)
SELECT CAST (MULTISET (SELECT * FROM emps) AS ntt) INTO nt1
FROM dual;
WITH emps AS (SELECT empno FROM emp WHERE job = 'SALESMAN')
SELECT CAST (MULTISET (SELECT * FROM emps) AS ntt) INTO nt2
FROM dual;
IF nt1 = nt2
THEN dbms_output.put_line ('Only salesmen have commissions');
END IF;
WITH emps AS (SELECT empno FROM emp WHERE job = 'ANALYST')
SELECT CAST (MULTISET (SELECT * FROM emps) AS ntt) INTO nt3
FROM dual;
IF nt1 IN (nt2, nt3)
THEN dbms_output.put_line
('Either all salesmen or all analysts have commissions');
END IF;
END;
/
Другой пример подчитывания данных в коллекцию выглядит более громоздко, однако не требует определения типа в БД (начиная с версии 8):
DECLARE
TYPE nt_type IS TABLE OF emp.empno%TYPE;
nt nt_type;
BEGIN
nt:= nt_type ();
FOR e IN (SELECT empno FROM emp WHERE job = 'SALESMAN')
LOOP
nt.EXTEND; nt (nt.LAST):= e.empno;
END LOOP;
--.........
END;
/
Привилегии
На использование типов коллекций, созданных в другой схеме БД, требуется иметь на них привилегию EXECUTE.
Серийное выполнение операций и связывание массивами
Возможность связывания элементов SQL-запроса не отдельными переменными, а массивами в виде коллекций, появилась в версии 8.1. Использование связывания массивами (коллекциями) позволяет существенно сократить обмен данными между клиентов и сервером.
Связывание массивами и серийное выполнение однотипных операций основывается на двух главных конструкциях: FORALL и BULK COLLECT INTO. Для них также существует несколько специальных атрибутов запроса SQL.
|
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!