- •Модель клиент/сервер
- •Лексические единицы
- •Идентификаторы
- •Зарезервированные слова
- •Ограничители
- •Литералы
- •Комментарии
- •Блок pl/sql
- •Объявление переменных
- •Типы pl/sql
- •Числовые
- •Символьные
- •Семейство типов без обработки
- •Семейство типов даты.
- •Семейство типов rowid
- •Семейство логических типов
- •Семейство типов Trusted
- •Ссылочные типы.
- •Типы lob
- •Записи.
- •Использование %type, %rowtype
- •Подтипы, определяемые пользователями
- •Преобразование типов данных
- •Выражения и операции
- •Присваивание
- •Логические выражения
- •Управляющие структуры pl/sql
- •Операторы goto и метки
- •Использование sql в pl/sql
- •Связи баз данных
- •Ссылки на таблицы
- •Курсоры и курсорные переменные
- •Курсорные атрибуты
- •Циклы выборки
Использование %type, %rowtype
%TYPE возвращает тип переменной или столбца таблицы после которой он написан. При этом ограничение NOT NULL не распространяется.
DECLARE
v_TempVar NUMBER(7,3) NOT NULL: 12.3;
v_AnotherVar v_TempVar%TYPE; — возвращает NUMBER (7,3)
Для объявление записей с теми же типами, которые имеют строки базы данных используется %ROWTYPE. Например:
DECLARE
v_RoomRecord rooms%ROWTYPE
Подтипы, определяемые пользователями
Подтип (subtype) — это альтернативное имя для некоторого типа, с помощью которого можно ограничить множество значений, допустимых для переменных, имеющих данный подтип. С помощью подтипа можно дать типу альтернативное имя, которое более точно описывает назначение этого типа. Для объявления подтипа используется синтаксис:
SUBTYPE новый_тип IS исходный_тип;
где новьш_тип — имя нового подтипа, а исходный_тип указывает базовый тип. Базовый тип может быть либо заранее определенным типом, либо подтипом, либо ссылкой %TYPE.
Преобразование типов данных
В PL/SQL можно выполнять преобразование скалярных типов данных, принадлежащих разным семействам типов. В пределах одного семейства типы данных можно преобразовывать произвольно, за исключением ограничений, налагаемых на переменные.
Например, переменную типа CHAR(10) нельзя преобразовать в переменную типа VARCHAR2(1), так как не будет хватать места для хранения значения этой переменной.
Независимо от типа существует два способа преобразования типов данных: явный и неявный. При явном используются соответствующие функции. Неявное преобразование - это автоматическое преобразование типов данных разных семейств, когда это возможно.
Выражения и операции
Посредством выражений и операций осуществляется связывание переменных PL/SQL. С помощью операций определяются способы присваивания переменным конкретных значений и способы работы с этими значениями. Выражение (expression) — это некоторая последовательность переменных и литералов, разделенных знаками операций, или операторами (operators). Значение выражения определяется значениями переменных и литералов, составляющих это выражение, а также описанием используемых операций.
Присваивание
Ее синтаксис таков: переменная := выражение,
Операнд — это аргумент операции. В операциях PL/SQL используется либо один аргумент (унарная, или одноместная, операция), либо два аргумента (бинарная, или двухместная, операция).
Для символьных типов существует лишь одна операция — это операция конкатенации, или сцепления (| |). При помощи данной операции соединяются две строки символов (или аргументы, которые могут быть неявно преобразованы в строки символов).
=
Если все операнды в выражении конкатенации имеют тип CHAR, то и оно само имеет тип CHAR. Если же хотя бы один операнд имеет тип VARCHAR2, выражение имеет тип VARCHAR2. Считается, что строковые литералы имеют тип CHAR.
Логические выражения
Но всех управляющих структурах PL/SQL (за исключением GOTO) используются логические выражения, называемые также условиями. Логическое, или булево, выражение — это любое выражение, которое даст в результате логическое значение (TRUE (истина), FALSE (ложь) или NULL).
Таблица истинности логических операторов:
В операциях сравнения, или отношения, в качестве операндов используются числа, символы или данные, а возвращаются логические значения. Ниже приведена таблица, где описаны эти операции.
Операция Описание
= Равно (равенство)
!= Не равно (неравенство)
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
В операции IS NULL значение TRUE возвращается только тогда, когда операндом является NULL. NULL-зиачения не могут быть проверены на истинность при помощи операций отношения, так как любое выражение отношения с NULL в качестве операнда возвращает NULL.
Операция LIKE (подобие) применяется для сопоставления с некоторым образцом строк символов, подобно тому, как это делается в регулярных выражениях системы Unix. Знак подчеркивания (_) соответствует только одному символу, а знак процента (%) — нулю и более символов. Выражения ниже возвращают TRUE:
В операции BETWEEN (между) операции <= и >= объединяются в одном выражении. Например, приведенное ниже выражение возвращает ложное значение (FALSE):
100 BETWEEN 110 AND 120
а это выражение возвращает TRUE:
100 BETWEEN 90 AND 110
Результатом операции IN (в) будет истинное значение, когда первый операнд содержится в наборе, определяемом вторым операндом. Например, результат этого выражения — FALSE:
'Scott' IN ('Mike', 'Pamela', 'Fred')
Если в наборе содержатся NUI.L-значения, они игнорируются, так как при сравнении некоторого значения с NULL-значением всегда будет возвращаться NULL.