PL/SQL не чувствителен к регистру, кроме строковых переменных и констант.
Каждая конструкция PL/SQL должна заканчиваться символом ;.
Одна конструкция может быть расположена на нескольких строках.
Типы данных
Язык PL/SQL поддерживает следующие категории типов:
встроенные типы данных, включая коллекции и записи;
объектные типы данных.
Встроенные типы данных
На рис. 11.1 приведен список встроенных типов PL/SQL.
Рис. 11.1. Список встроенных типов PL/SQL
Скалярные типы описывают простые значения, не имеющие внутренних составляющих.
Составные типы описывают структуры, в которых имеются внутренние компоненты.
Ссылочные типы содержат значения. LOB типы содержат значения, называемые локаторами, которые определяют расположение больших объектов хранимых данных (например, графические файлы).
В следующей таблице приведено описание некоторых типов данных языка PL/SQL.
Синтаксис
Диапазон значений
Числовые типы
BINARY_INTEGER PLS_INTEGER (целое со знаком)
-2147483647 .. 2147483647 Тип PLS_INTEGER требует меньше памяти и обрабатывается быстрее, чем другие числовые типы
NUMBER[(precision,scale)] (с плавающей точкой)
1.0E-130 .. 9.99E125
NUMERIC (с фиксированной точкой)
точность до 38 десятичных знаков
FLOAT (с плавающей точкой)
точность до 38 десятичных знаков
REAL (с плавающей точкой)
точность до 18 десятичных знаков
Символьные типы
CHAR[(maximum_length)] (для строк постоянной длины) LONG (для строк переменной длины)
до 32767 байт Для столбца базы данных максимальный размер типа CHA составляет 2000 байтов, а типа LONG - до 2 Гб
RAW(maximum_length) LONG RAW (для двоичных данных или строк байтов)
до 32767 байт Для столбца базы данных типа RAW максимальный размер - 2000 байт.
VARCHAR2(maximum_length) (для строк символов переменной длины)
до 32767 байт
Все встроенные типы данных являются базовыми типами.
Любой базовый тип PL/SQL определяется как набор значений и набор операций, выполнимых над этими значениями.
Язык PL/SQL позволяет определять новые подтипы как подмножество значений некоторого базового типа с тем же набором операций. Подтип не вводит никаких дополнительных операций над данными и не определяет никакого нового типа.
Определение подтипа может иметь следующее формальное описание:
SUBTYPE subtype_name IS base_type;
В пакете STANDARD базы данных Oracle, автоматически подключаемом для любого блока, определено несколько подтипов.
Пользователь может определить свой тип как некоторый подтип в секции объявлений блока, подпрограммы или пакете PL/SQL.
Например:
DECLARE SUBTYPE MyDate IS DATE; -- Основан на типе DATE TYPE MyRec IS RECORD (time1 INTEGER, time2 INTEGER); SUBTYPE MyInterval IS MyRec; -- Основан на типе RECORD SUBTYPE ID_N IS tbl1.f1%TYPE; -- Основан на типе столбца
Типы, используемые как базовые, не могут содержать ограничений длины. Для создания пользовательского типа с ограничением длины предварительно объявляется переменная такого типа и уже на ее основе определяется пользовательский тип.
Например:
DECLARE var1 VARCHAR2(6); -- Объявление переменной -- с ограничением длины SUBTYPE string_6 IS var1%TYPE; -- Объявление