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

Имеются следующие категории типов: скалярные, составные, ссылочные, LOB (large object). Внутри скалярных типов не содержится никаких компонентов, в то время как в составных типах они присутствуют. Ссылочный тип является указателем на другой тип. Допустимые скалярные типы включают типы, аналогичные тем, которые применяются для определения столбцов таблиц базы данных, и ряд дополнительных типов. Скалярные типы можно разделить на семь семейств: числовые типы, символьные типы, типы без обработки, типы даты, типы ROWID, логические типы и типы Trusted.

    1. Числовые

При помощи семейства числовых типов хранятся целые и действительные значения. Существует три базо­вых типа: NUMBER, PLS_INTEGER и BINARY_INTEGER. В переменных, имеющих тип NUMBER, мож­но сохранять как целые, так и действительные величины, а в переменных типа BINARY_INTEGER или PLS_INTEGER — только целые числа.

Синтаксис объявления некоторо­го числа NUMBER таков:

NUMBER (P,S); где Рточность (precision), a S — масштаб (scale). Точность — это количество цифр в значении, а масш­таб — количество цифр справа от десятичной точки. Использование как точности, так и масштаба нео­бязательно, однако при указании масштаба необходимо указывать и точность. Максимальной точностью является 38 цифр, а масштаб может быть числом в диапазоне от до 127. Тип NUMBER хранится в десятичном представлении, и по этом удобен для хранения в БД, но для использования в вычислениях он ДБ преобразован в двоичное представление. BINARY_INTEGER изначально двоичный, поэтому, если переменная должны быть использована только для вычислений (напр. счетчик цикла), то лучше объявить ее этим типом. Диапазон от до . Тип PLS_INTEGER то же что и BINARY_INTEGER, с тем отличием, что в случае переполнения возникает ошибка, в то время как BINARY_INTEGER просто приводится к NUMBER, диапазон которого дольше.

    1. Символьные

Переменные символьных типов используются для хранения строковых, или символьных, данных. В это семей­ство входят типы VARCHAR2, CHAR, LONG, NCHAR и NVARCHAR2.

VARCHAR2 аналогичен типу VARCHAR2, применяемому в базах данных. При помощи переменных типа VAROHAR2 можно хранить строки символов переменной длины. Синтаксис объявления переменной, имеющей тип VARCHAR2 таков:

VARCHAR2(L);

где L — максимальная длина (length) переменной в байтах. Если используются многобайтовые символы, то длина строки будет в m раз меньше (m - количество байт на символ). Указание длины обязательно — значения по умолча­нию не существует. Максимальная длина переменной типа VARCHAR2 составляет 32 767 байтов. Обра­тите внимание, что в поле столбца базы данных, имеющем тип VARCHAR2, можно хранить только 4000 байтов ( В версии младше Oracle8 эта цифра 2000). Если длина переменной типа VARCHAR2 PL/SQL превышает 4000 байтов, ее можно ввес­ти лишь в столбец базы данных, имеющий тип LONG, максимальный размер которого составляет 2 ГБ. Аналогично, данные LONG нельзя выбрать в переменную VARCHAR2, если их размер превы­шает 32767 байтов.

Переменные типа CHAR представляют собой строки символов фиксированной длины. Синтак­сис объявления переменной CHAR таков:

CHAR(L);

где L — максимальная длина в байтах (с многобайтовыми символами ситуация как у VARCHAR2). Однако, в отличие от типа VARCHAR2 указание длины необязательно. Если она не указана, принимается значение по умолчанию 1, причем круглые скобки нс нужны. Переменные типа CHAR имеют фиксированную длину, поэтому при необходимости они заполняются до максимальной длины пробелами. Ограничение на длину в БД - 255 байтов до Oracle8 и 2000 байтов после включительно.

Тип LONG аналогичен VARCHAR2 и его максимальная длина 32760 байт. Но БД максимальная длина 2 ГБ, и как следствие в БД можно писать без проблем, а обратно возможны ошибки.

Переменные типов NCHAR и NVARCHAR2 описываются точно так же, как и переменные типов CHAR и VARCHAR2. Однако длина может меняться в зависимости от применяемого национального на­бора символов. Если в таком наборе размер символов фиксирован, длина указывается в символах. Если же их размер непостоянен, длина указывается в байтах.

При необходимости Oracle автома­тически преобразует символьные переменные, для которых применяются разные наборы символов. Это может происходить, когда информация посредством связи баз данных передается из одной базы в дру­гую, причем каждая из них использует свой набор символов.