DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Зарезервированные слова

Многие идентификаторы, называемые зарезервированными (или ключевы­ми) словами, имеют в PL/SQL особое значение. Использовать эти слова для именования собственных идентификаторов нельзя. Например, клю­чевые слова BEGIN и END применяются для ограничения блоков PL/SQL, поэтому их нельзя использовать в качестве имен переменных. Ниже приводится недопустимый раздел объявлений, так как begin явля­ется зарезервированным словом. При обработке этого раздела будет вы­дано сообщение об ошибке компиляции:
Г)    DECLARE
begin NUMBER;

Эти слова нельзя использовать как собственно идентификаторы, но их можно включать в состав других идентификаторов. Например, следующий
раздел объявлений допустим:
DECLARE
v_BeginDate DATE;
В этой книге зарезервированные слова выделяются заглавными буквами, что делает программы более удобочитаемыми. Полный список зарезерви­рованных слов содержится в приложении А.
Идентификаторы в кавычках
Если нужно сделать идентификатор чувствительным к регистру симво­лов, включить в его состав такие символы, как пробелы, или воспользо­ваться зарезервированными словами, следует заключить его в двойные кавычки. Ниже приводятся корректные и отличающиеся друг от друга
идентификаторы:
"A number" "Linda's variable"
"х/у" "X/Y"
Максимальная длина идентификаторов в кавычках также равна 30 сим­волам (без учета кавычек). В состав идентификатора в кавычках может
входить любой печатный символ, за исключением двойных кавычек.
Идентификаторы в кавычках полезны в случае необходимости исполь­зовать зарезервированное слово PL/SQL в SQL-операторе. В PL/SQL за­резервировано больше слов, чем в SQL (см. приложение А). Например,
обратиться с запросом к таблице, содержащей столбец exception (заре­зервированное слово), можно так:
Г)    DECLARE
v_ Exception    VARCHAR2(10); BEGIN
SELECT "EXCEPTION" INTO v_Exception FROM exception_table;
END;
Обратите внимание, что слово "EXCEPTION" написано прописными
буквами. Все объекты Oracle хранятся в словаре данных в верхнем реги­стре, если только идентификатор не создан явным образом (оператором
CREATE) как идентификатор в кавычках с помощью символов нижнего регистра. Строки внутри двойных кавычек являются зависимыми от ре­гистра символов, поэтому "EXCEPTION" также должно быть записано в верх­нем регистре.
Использование зарезервированных слов в качестве идентификаторов
не запрещено, но считается плохим стилем программирования и затруд­няет понимание программы. Оно может потребоваться в единственном случае, когда в таблице базы данных зарезервированное слово PL/SQL применяется как имя некоторого столбца. Поскольку в PL/SQL больше зарезервированных слов, чем в SQL, в таблице может содержаться стол­бец, имя которого является зарезервированным словом PL/SQL, но не является таковым в SQL. Подобную ситуацию и иллюстрирует таблица exceptionable из предыдущего примера.
Совет
Хотя таблица exception_table вполне может использоваться в PL/SQL, рекомендуется переименовать некорректный столбец. Если определение таблицы изменить нельзя, в качестве альтернативы можно создать представление, в котором данный столбец будет иметь другое имя. Затем это представление можно использовать в PL/SOL. Для примера предположим, что таблица exception_table создана следующим образом:
CREATE TABLE exception table (
exception     VARCHAR2(20),
date_occured DATE): С учетом этого можно создать представление:
CREATE VIEWexception_viewAS SELECT exception exception_description, date_occured FROM exception_table; Теперь вместо таблицы exception table можно использовать представление exception_view, и на рассматриваемый столбец можно ссылаться как на exception_description, что не является зарезервированным словом.

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

 









jAntivirus