Лексические единицы
Лексическая единица – это последовательность символов входящих в набор символов, разрешённых в PL/SQL.
В языке PL/SQL используются следующие буквы, цифры, специальные символы и символы-разделители:
- буквы A-Z, a-z;
- цифры 0-9;
- специальные символы: - ! @ # $ % & * () _ -+=|[]{}:;"'<>,.?/^;
- пробельные символы: пробел, табуляция, возврат каретки, новая строка.
Все лексические единицы делятся на 4 группы:
1) идентификаторы,
2) литералы,
3) разделители,
4) комментарии.
1) Идентификаторы - это имена объектов PL/SQL, включая константы, скалярные переменные, составные переменные (записи или коллекции), исключения, процедуры, функции, пакеты, типы, курсоры, зарезервированные слова и метки. Идентификаторы обладают следующими характеристиками:
- могут состоять не более чем из 30 символов;
- не могут содержать пробельные символы (пробел, табуляцию, возврат каретки, новую строку);
- должны начинаться с буквы;
- могут содержать знаки: знак доллара ($), подчёркивание(_) или знак диеза (#);
- не могут быть зарезервированными (ключевыми) словами;
- не чувствительны к регистру.
Если идентификаторы заключены в двойные кавычки, то в силе остаётся только первое из всех этих правил. Другими словами в закавыченный идентификатор может входить любой печатный символ, за исключением самих двойных кавычек.
Oracle настоятельно рекомендует не использовать без крайней необходимости такие нестандартные идентификаторы, так как это влечет появление дополнительных проблем. Так, например, применение кавычек будет оправдано, если какой-нибудь столбец в БД называется зарезервированным словом PL/SQL и его нельзя переименовать или создать представление, в котором столбец будет переименован.
2) Литералы - это конкретные символьные, числовые или логические значения, которые не являются идентификаторами. Существует несколько различных типов литералов:
- числовые литералы;
- строковые литералы;
- логические литералы;
- литералы интервалов дат и времени.
Литералы могут иметь неопределённое значение NULL. Не существует литералов для составных типов, т.к. они существует только во внутреннем представлении.
Числовой литерал – это целое или действительное значение, которое может быть присвоено без преобразования переменной с типом NUMBER. Эти литералы используются в арифметических выражениях. В целых литералах может использоваться знак + или – и цифры. В действительных литералах дополнительно используются десятичная точка или знак экспоненциальной формы – e, после которого можно указывать только целый литерал.
Символьный (строковый) литерал состоит из одного или нескольких символов, заключенных в одинарные кавычки (‘Rick’, ‘Это интересная книга’). В отличие от идентификаторов, литералы чувствительны к регистру. Для того чтобы поместить одинарную кавычку в строковый литерал, надо расположить две одинарные кавычки друг за другом (‘Mikes’’string’). Строковые литералы могут быть присвоены переменным с типом CHAR или VARCHAR2 без преобразования.
Логические литералы: TRUE, FALSE, NULL могут быть присвоены только логическим (булевым) переменным, обычно используются с управляющими операторами типа IF, LOOP.
В Oracle9i были введены два новых типа данных: интервалы дат и времени INTERVAL YEAR TO MONTH и INTERVAL DAY TO SECOND. Они представляют временные интервалы, выраженные в годах и месяцах либо в днях, часах, минутах, секундах и долях секунд. Литералы этого типа имеют форму INTERVAL YEAR (точность_года) TO MONTH или INTERVAL DAY (точность_дня) TO SECOND (точность_долей_секунды).
3) Разделители (ограничители) - это символы или последовательности символов, имеющие специальное значение в PL/SQL: отделяют друг от друга идентификаторы. Имеющиеся в PL/SQL разделители перечислены в таблице
Разделитель | Описание |
; | признак конца оператора, ограничитель для команд и объявлений |
+-*/**= | Арифметические операторы |
<>!=^=~= | Операторы неравенства |
< > <= >= <> | Операторы сравнения |
|| | Операторы конкатенации |
:= | Оператор присваивания |
() | Ограничитель начала и конца выражения или списка |
, | Разделитель элементов в списках |
' | Ограничитель литерала |
“ | Ограничитель “закавыченного” идентификатора |
<< >> | Ограничители метки |
: | Ограничитель переменной привязки (связи) |
% | Ограничитель атрибута |
. | признак компонента, в частности поля записи или элемента пакета |
@ | Признак связи БД |
=> | Признак связывания параметров при вызове (ассоциация) |
.. | Оператор диапазона в цикле FOR |
4) Комментарии
Комментарии это – тип документирования программ и отдельных операторов с целью облегчения понимания их работы. Комментарии могут быть записаны в одной строке или занимать несколько строк. Однострочные и многострочные комментарии отделяются от остальной программы ограничителями (табл. ) и эффективно игнорируются PL/SQL при компиляции.
-- | Признак однострочного комментария |
/* */ | Ограничители многострочного комментария |