- •Модель клиент/сервер
- •Лексические единицы
- •Идентификаторы
- •Зарезервированные слова
- •Ограничители
- •Литералы
- •Комментарии
- •Блок pl/sql
- •Объявление переменных
- •Типы pl/sql
- •Числовые
- •Символьные
- •Семейство типов без обработки
- •Семейство типов даты.
- •Семейство типов rowid
- •Семейство логических типов
- •Семейство типов Trusted
- •Ссылочные типы.
- •Типы lob
- •Записи.
- •Использование %type, %rowtype
- •Подтипы, определяемые пользователями
- •Преобразование типов данных
- •Выражения и операции
- •Присваивание
- •Логические выражения
- •Управляющие структуры pl/sql
- •Операторы goto и метки
- •Использование sql в pl/sql
- •Связи баз данных
- •Ссылки на таблицы
- •Курсоры и курсорные переменные
- •Курсорные атрибуты
- •Циклы выборки
Семейство типов без обработки
Синтаксис описания переменной RAW (LONG RAW) таков:
RAW(L);
где L — длина переменной в байтах. Тип RAW (LONG RAW) используется для хранения двоичных данных фиксированной длины. Максимальная длина переменной RAW LONG RAW равна ( ) байтам. Максимальная же длина поля RAW базы данных составляет 255 байтов, поэтому, если размер данных превышает 255 байтов, они не могут быть введены в столбец RAW базы данных. Однако они могут быть введены в столбец базы данных, имеющий тип LONG RAW, максимальная длина которого составляет 2 ГБ. Аналогично, если длина данных в поле LONG RAW превышает байтов, выбрать их в переменную PL/SQL RAW (LONG RAW) нельзя.
Семейство типов даты.
В этом семействе имеется только один тип — DATE, который абсолютно аналогичен типу DATE, применяемому в базах данных. Тип DATE используется для храпения информации как о датах, так и о времени, в том числе о веках, голах, месяцах, днях, часах, минутах к секундах. Размер переменной DATE составляет 7 байтов, по одному байту на каждый компонент (от века до секунды).
Значения переменным DATE обычно присваиваются посредством встроенной функции TO_DATE. Это позволяет легко преобразовывать символьные переменные в переменные DATE. Подобно этому при помощи функции TO_CHAR можно преобразовывать переменные DATE в символьные переменные.
Семейство типов rowid
В этом семействе только один тип — ROWID, который абсолютно аналогичен типу, используемому для работы с псевдостолбцами ROWID базы данных. Он дает возможность сохранять идентификаторы строк (rowids). которые можно рассматривать в качестве ключей, однозначно определяющих каждую строку базы данных. Идентификаторы строк хранятся внутри базы данных в виде двоичных значении фиксированной длины, размер которых зависит от применяемой операционной системы. Для работы с идентификаторами строк их можно преобразовать в последовательности символов при помощи встроенной функции ROWIDTOCHAR. Результатом работы этой функции является 18-символьпая последовательность, имеющая формат:
ВВВВВВВВ.RRRR.FFFF
где ВВВВВВВВ определяет блок в файле базы данных. RRRR — строку в блоке, а FFFF - номер файла. Каждый элемент идентификатора строки представлен в виде шестнадцатеричного числа. Например, идентификатор строки
0000001E.00FF.0001
указывает на 30-й блок, 255-ую строку в этом блоке, который расположен в файле 1. Идентификаторы строк обычно не создаются программами PL/SQL; они выбираются в псевдостолбце ROWID таблицы. Затем выбранное значение может быть использовано в задаваемом условии оператора UPDATE или DELETE.
Семейство логических типов
Единственным типом данных этого семейства является тип BOOLEAN. Логические переменные используются в управляющих структурах PL/SQL, таких как операторы IF-THEN-ELSE и LOOP. Значение типа BOOLEAN может быть только TRUE, FALSE и NULL. (Но не 0 или 1 как в C\C++)
Семейство типов Trusted
Единственным типом данных этого семейства является тип MLSLABEL, используемый в Trusted Oracle для хранения двоичных меток переменной длины. В стандартной системе Oracle в переменных и столбцах, имеющих тип MISLABEL, могут содержаться только NULL-значения. Внутренняя длина переменных типа MLSLABEL составляет от 2 до 5 байтов, однако их можно автоматически преобразовывать в символьные переменные, а также выполнять обратное преобразование. Максимальная длина символьного представления переменной MLSLABEL составляет 255 байтов.