В начало

 

2. БАЗИСНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА PL/SQL

 

Набор символов: программа PL/SQL представляет собой строки текста, использующего следующий набор символов:

символы верхнего и нижнего регистра A-Z, a-z

цифры 0-9

метки табуляции, пробелы, знаки переноса строки

символы () + - * / < > = ! ~ ; : . “ % , ‘ $ ^ | { } ? [ ]

PL/SQL не чувствителен к регистру, так что символы нижнего регистра эквивалентны соответствующим символам верхнего регистра, за исключением текста и символьных литералов.

Лексические модули: текст строки PL/SQL содержит группы символов, известные как лексические модули, которые делятся на:

Разделители (простые и составные символы)

Идентификаторы, включающие зарезервированные слова

Литералы

Комментарии

Чтобы улучшить восприятие текста, можно разделять лексические модули пробелами. Смежные идентификаторы необходимо отделять пробелом или знаками пунктуации. Но нельзя включать пробелы в лексические модули, кроме строковых литералов и комментариев.

Разделитель – простой (таблица 1) или составной символ (таблица 2), который имеет специальное значение в PL/SQL. Простые разделители состоят из одного символа, составные - из двух символов.

Таблица 1. Простые разделители PL/SQL

Разделитель Значение
+ Сложение
- Вычитание
* Умножение
/ Деление
= равно — оператор отношения
< меньше — оператор отношения
> больше — оператор отношения
( разделитель выражения или списка
) разделитель выражения или списка
; окончание оператора
% индикатор атрибута
, разделитель элементов
. составляющая выделения
@ индикатор удаленного доступа
разделитель символьной строки
‘‘ разделитель цитируемого идентификатора
: индикатор главной переменной

 

Таблица 2. Составные разделители PL/SQL

Составной символ Значение
** возведение в степень
<> оператор отношения
!= оператор отношения
~= оператор отношения
^= оператор отношения
<= оператор отношения
>= оператор отношения
:= оператор присваивания
=> оператор ассоциации
.. оператор размерности
|| оператор сцепления
« определитель метки (начало)
» определитель метки (конец)
-- индикатор однострочного комментария
/* определитель многострочного комментария (начало)
*/ определитель многострочного комментария (конец)

 

Идентификаторыиспользуются для именования объектов про­граммы PL/SQL и модулей: констант, переменных, исключений, курсо­ров, переменных курсоров, подпрограмм и пакетов.

Идентификатор состоит из символа, необязательно сопровождае­мого другими символами, числами, знаком доллара, подчеркиванием и знаком номера. Использование других символов, например, дефиса, слэ­ша и пробела, запрещено. Для написания идентификатора можно исполь­зовать верхний, нижний или оба регистра вместе.Длина идентификатора не может превышать 30 символов.

Некоторые идентификаторы, обозначаемые зарезервированными словами, имеют специальное синтаксическое значение в PL/SQL и по­этому не могут быть переопределены. Например, слова BEGIN и END, определяющие начало и конец блока или подпрограммы, являются заре­зервированными. При переопределении зарезервированного слова выво­дится ошибка трансляции.

PL/SQL позволяет включать идентификаторы внутри двойных ка­вычек. Такие идентификаторы редко являются необходимыми, но иногда они могут быть полезны. Они могут содержать любую последователь­ность печатаемых символов, включая пробелы, за исключением двойных кавычек. Максимальная длина идентификатора в кавычках - 30 символов, без учета двойных кавычек.

Пример использования идентификатора, заключенного в двойные кавычки: некоторые зарезервированные PL/SQL слова не зарезервированы SQL. Можно использовать зарезервированное PL/SQL слово TYPE в утверждении CREATE TABLE в качестве имени столбца базы данных. Но если утверждение SQL в программе обращается к этому столбцу, на экран выводится ошибка трансляции. Чтобы предотвратить ошибку, необходимо имя столбца в запросе ввести в верхнем регистре и заключить его в двойные кавычки следующим образом: SELECT shifr, "TYPE", bal INTO ...

Литерал - это числовое, символьное, строковое или логиче­ское значение, не представляемое идентификатором.

В арифметических выражениях могут использоваться два вида чи­словых литералов: целые и действительные. Целочисленный литерал - целое число без десятичной точки. Действительный литерал - целое или десятичное число с десятичной точкой.

Числовые литералы не могут содержать знак доллара или запятые, но могут быть написаны в формате с плавающей запятой, например: -9.5е-3.

Символьный литерал - это единичный символ, заключенный в одиночные кавычки (апострофы). Символьные литералы включают все печатаемые символы в наборе символов PL/SQL: символы, записи числа, пробелы и специальные символы. PL/SQL чувствителен к регистру внут­ри символьных литералов. Символьные литералы '0' .. '9' не являются целочисленными литералами, но могут использоваться в арифметических выражениях, потому что они неявно обратимы в целые числа.

Строка литералов является последовательностью от нуля до не­которого количества символов, заключенных в одиночные кавычки. Все строковые литералы за исключением нулевой (пустой) строки (") имеют тип данных CHAR.

Для того, чтобы вставить апостроф в строчный литерал, необходи­мо ввести рядом две одиночные кавычки. PL/SQL чувствителен к регистру внутри строчных литералов.

Булевским литералом является одно из предопределенных зна­чений - TRUE, FALSE и значение NULL, определяющее отсутствующее, неизвестное или неподходящее значение. Логический литерал не являет­ся строкой.

Транслятор PL/SQL игнорирует комментарии, но их необходимо добавлять к программе для включения пояснений к тексту программы. PL/SQL поддерживает два стиля комментария: однострочный и много­строчный. Комментарии с одиночной строкой начинаются с двойного дефиса (--) в произвольной позиции на строке и продолжаются до конца строки. Например:

--начало программы

SELECT nazv_s INTO var1 FROM spec -- определение значения var1

WHERE kod_f = 12;

stip1:= stip * 1.15; -- расчет стипендии

Многострочные комментарии размещаются на нескольких строках между символами / * и * /. Следующие три примера иллюстрируют некоторые популярные форматы:

/* вычисление площади круга */

area:= pi * radius**2;

 

/***********************************

* вычисление площади круга *

********************************************/

area:= pi * radius**2;

 

/* вычисление площади круга

*/

area:= pi * radius**2;

 

Для исключения из текста программы сразу нескольких рядом стоящих операторов можно использовать разделители многострочного комментария.

Нельзя использовать однострочные комментарии в блоке PL/SQL, ко­торый будет обработан динамически программой Oracle Precompiler, потому что символы конца строки данной программой игнорируются, и коммента­рий в этом случае продолжается до конца блока, а не до конца строки. Такие однострочные комментарии следует заменять многострочными.