Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выборка PL.SQL.docx
Скачиваний:
4
Добавлен:
20.07.2019
Размер:
316.25 Кб
Скачать
    1. Ссылочные типы.

Пекло того как переменная PL/SQL объявлена и ей назначен некоторым скалярный или составной тип, для ее хранения выделяется определенная область памяти. Переменная даст выделенной области имя и впоследствии используется в программе для ссылки на нее. Однако нельзя отменить выделение памяти и одновременно сохранить возможность работы с переменной - память не освобождается до тех пор, пока переменная находится в области своего действия. Для ссылочных типов такого ограничения нет. Ссылочный тип PL/SQL - это то же самое, что и указатель в С. Переменная, объявленная со ссылочным типом, во время выполнения программы может указывать на различные области памяти. Ссылочные типы PL/SQL объявляют­ся следующим образом:

REF тип

где тип — это предварительно определенный тип. Ключевое слово REF означает, что новый тип будет указателем на ранее определенный тип.

    1. Типы lob

Используются для хранения больших объектов. Большой объект (large object) может быть либо двоичным, либо символьным значением размером до 4-х Гбайтов. В бо­льших объектах могут содержатся неструктурированные данные, доступ к которым осу­ществляется эффективнее, чем к данным типа LONG или LONG RAW, с меньшим числом ограничений. Типы LOB управляются с помощью модуля DBMS_LOB.

    1. Записи.

Служат для объединения несколько других типов в один составной. Общий синтаксис описания типа записи таков:

TYPE тип_записи IS RECORD (

поле1 тип1 [NOT NULL] [:= выражение1],

поле2 тип2 [NOT NULL] [:= выражение2],

полеΝ типΝ [NOT NULL] [:= выражениеΝ]);

Здесь тип_записи — это имя нового типа, поле1 ... полеΝ — имена полей записи, a mun1 ... munΝ— типы соответствующих полей. Нет ограничений на N. В остальном всё аналогично объявлению переменных. Для ссылки на поле записи используется запись через точку. Ее синтаксис таков: имя_записи.имя_поля

Чтобы присвоить одной записи значение другой, они должны быть одного типа. Присвоить записи значение можно с помощью оператора SELECT. Поля записи должны соответствовать (имя и тип) по­лям, указываемым в списке выбора запроса.

    1. Таблицы

Таблицы аналогичны массивам языка. Это тоже тип данных. Общий синтаксис описания таблицы таков:

TYPE тип_таблицы IS TABLE OF тип INDEX BY BINARY_INTEGER;

где тип_таблицы— имя нового типа, а тип— ранее определенный скалярный тип или ссылка на скаляр­ный тип посредством %TYPE. Для обращения к строке переменной типа таблица используется синтаксис:

имя_таблицы(индекс)

Для обращения к полю:

таблица( индекс).поле

где имя_таблицы — это имя переменной, а индекс— либо переменная, имеющая тип BINARY_INTEGER, либо переменная или выражение, которые могут быть преобразованы к типу BINARY_INTEGER.

Таблица PL/SQL содержит два столбца — KEY (ключ) и VALUE (значение). Тип ключа — BINARY_INTEGER, а тип значения — это тип, указанный в описании (тип в синтаксисе описания таблицы, приведенном выше). Например:

Особенности:

■ Число строк таблицы ничем не ограничено. Единственное ограничение — это значения, которые могут быть представлены типом BINARY_INTEGER.

■ Порядок элементов таблицы PL/SQL необязательно должен быть строго определен. Эти элементы хранятся в памяти не подряд, как массивы, и поэтому могут вводиться с произвольными ключами.

■ Ключи, используемые в таблице PL/SQL, необязательно должны быть последовательными. В качестве индекса таблицы может быть использовано любое значение или выражение, имеющее тип BINARY_INTEGER.

Таблицы имеют атрибуты. Для обращения к ним используется синтаксис имя_табоицы.атрибут . Существуют следующие атрибуты:

Атрибут COUNT (количество) возвращает текущее количество строк таблицы.

Атрибут DELETE (удалить) удаляет строки таблицы. Он используется следующим образом:

таблица.DELETE — удаляются все строки таблицы

таблица.DELETE(i)— удаляется строка таблицы с индексом i

таблица.DELETE (i,j) — удаляются все строки таблицы с индексами от i до j

Атрибут EXISTS (существует) в виде таблица. EXISTS (i) возвращает истинное значение, когда индекс i существует в таблице, а ложное — когда не существует.

FIRST и LAST возвращают индексы соответственно первой (first) и последней (last) строк таблицы.

В атрибутах NEXT (следующий) и PRIOR (предшествующий) используется один аргумент. Они возвращают соответственно индекс следующего или предшествующего элемента таб­лицы. Эти атрибуты можно применять в цикле, который перебирает всю таблицу независимо от того, какие значения используются в индексах.