Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по субд Крупская.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

48 Коллекции (составные типы pl/sql).

В PL/SQL доступны следующие составные типы: записи, таблицы (вложенные и индексные) и изменяемые массивы. Составной тип содержит компоненты. В переменной, имеющей составной тип, находится одна или несколько скалярных переменных (называемых такжеатрибутами).

Коллекцией называется упорядоченная группа элементов одного типа. Язык PL/SQL поддерживает три вида коллекций:

  • вложенные таблицы (nested tables);

  • индексированные таблицы;

  • varray-массивы (variable-size arrays).

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

  • для обмена с таблицами баз данных и столбцами данных;

  • для передачи столбца данных из приложения клиента в хранимую процедуру или обратно.

Для создания коллекции следует определить тип коллекции -TABLEилиVARRAY- и объявить переменную этого типа. Определение типа выполняется в секции объявлений блока PL/SQL, подпрограммы или пакета.

Вложенную таблицуможно рассматривать как одномерный массив, в котором индексами служат значения целочисленного типа в диапазоне от1до2147483647.Вложенная таблицаможет иметь пустые элементы, которые появляются после их удаления встроенной процедуройDELETE.Вложенная таблицаможет динамически увеличиваться.

Индексированная таблица- это вариантвложенной таблицы, в которой элементы могут иметь произвольные целочисленные значения индексов. Такой тип данных очень удобен, если в качестве индекса использовать значение первичного ключа.

Максимальное количество элементов в Varray-массивеуказывается при определении типа и не может изменяться динамически. Доступ к каждому элементуVarray-массиваосуществляется по индексу.Varray-массивыможно передавать в качестве параметров.Varray-массивыне могут иметь пустот, так как для них нет операции удаления произвольного элемента массива.

  1. Функции и методы коллекций. Инициализация коллекций.

Методы, применяемые при работе с коллекциями

В PL/SQL реализован ряд встроенных методов для работы с коллекциями. Эти методы вызываются как collection_name.method_name[(parameters)]

Эти методы нельзя вызывать из SQL-оператора. В следующей таблице приведено описание встроенных функций, используемых для работы с коллекциями.

Метод

Описание

EXISTS(n)

Если n-ый элемент коллекции существует, то функция возвращает значениеTRUE

COUNT

Функция возвращает реальное количество элементов, которые содержит коллекция

LIMIT

Функция возвращает размер varray-массиваилиNULL- длявложенных таблиц

DELETE(m,n)

Эта процедура удаляет элементы из вложеннойилииндексированной таблицы. Если параметров не задано, то удаляются все элементы коллекции. При задании параметраnудаляетсяn-ый элементвложенной таблицы, а если задано оба параметра, то удаляются все элементы в диапазоне отnдоm

FIRST,LAST

Функции возвращают наименьший и наибольший индекс элементов коллекции. Для пустой вложенной таблицыобе функции возвращают значениеNULL. ДляVarray-массивоввызов функцииFIRSTвсегда возвращает значение1

PRIOR(n)

Эта функция используется для цикла или последовательного просмотра элементов вложенных таблици возвращает индекс элемента, предшествующего указанному параметромn. Если такого элемента нет, то возвращается значениеNULL

NEXT(n)

Функция употребляется для цикла или последовательного просмотра элементов вложенных таблици возвращает индекс элемента, следующего за указанным параметромn. Если такого элемента нет, то возвращается значениеNULL

EXTEND(n,i)

Функция увеличивает размер вложеннойилииндексированной таблицы, позволяя добавлять в конец коллекции как один элемент, так и несколько элементов. Если параметров не задано, то в коллекцию добавляется одинnull-элемент, а если указан только параметрn, то добавляютсяn null-элементов. Если задано оба параметра, то добавляютсяnэлементов, являющихся копиямиi-го элемента коллекции

TRIM(n)

Функция выполняет удаление одного или нескольких элементов вложеннойилииндексированной таблицы. Если параметры не указаны, то удаляется один последний элемент, а при задании параметра удаляютсяnпоследних элементов коллекции. Если значение параметра превышает реальное количество элементов, возвращаемое функциейCOUNT, то инициируется исключение. Если элемент был ранее удален функциейDELETE, то он все равно будет входить в число удаляемых функциейTRIMэлементов