Регистрозависимость и правильное использование кавычек
Задавая значения опций и указывая объекты в операторах SQL Db2, необходимо знать, где нужны кавычки, какого типа и как они влияют на регистрозависимость.
От того, как вы назовете объекты при создании, зависит регистр символов в имени объектов и требования к дальнейшим спецификациям имен объектов и значений опций в командах. Например, если при создании псевдонима не заключить имя в двойные кавычки, системный каталог сохранит псевдоним в символах верхнего регистра независимо от того, в каком регистре ввели имя объекта вы. Если использовать двойные кавычки при создании псевдонима, каталог сохранит символы в имени объекта точно в том регистре, в каком вы их задали. После этого при использовании имени объекта как значения опции будет необходимо точно указывать этот регистр. Например, для опции столбца FOREIGN_KEY, которой пользуются оболочки Script, веб-службы и XML, требуется указывать псевдоним столбца внешнего ключа как значение опции. Вводя значение опции, нужно использовать тот же регистр, в котором каталог сервера объединения сохранил псевдоним.
| Идентификатор | Использование регистра и кавычек | Примеры |
|---|---|---|
| Значение опции | Используйте регистр, который требуется для значения опции, и заключите это значение опции в одинарные кавычки. | Этот оператор создает таблицу источника данных с именем remote_schema.remote_table (все в нижнем регистре):Этот оператор создает таблицу источника данных с именем REMOTE_SCHEMA.REMOTE_TABLE (все в верхнем регистре): |
| Объект, содержащий только символы нижнего регистра | Используйте символы только нижнего регистра и заключите идентификатор в двойные кавычки. | Этот оператор создает псевдоним для таблицы источника данных с именем infx_user.remote_table (все в нижнем регистре):Прим.: Некоторые источники данных,
такие как Informix и Teradata, по умолчанию используют имена в нижнем регистре.
|
| Объект, содержащий только символы верхнего регистра, цифры и символы подчеркивания (_) | Можно выбрать один из двух вариантов:
|
Каждый из этих операторов создает псевдоним MY_NICK (все в верхнем регистре): |
Из окна командной строки операционной системы UNIX
- Операторы SQL, содержащие двойные кавычки, но не содержащие одинарных кавычек
- Если оператор SQL содержит двойные кавычки, но не содержит одинарных кавычек, заключите весь оператор в одинарные кавычки. Например, если вы хотите ввести следующий оператор SQL:
CREATE NICKNAME мой_псевдоним FOR мой_сервер."владелец"."моя_таблица"Вы вводите следующий текст в окно командной строки UNIX:
db2 'CREATE NICKNAME мой_псевдоним FOR мой_сервер."владелец"." my_table"' - Операторы SQL, содержащие одинарные кавычки, но не содержащие двойных кавычек
- Если оператор SQL содержит одинарные кавычки, но не содержит двойных кавычек, заключите весь оператор в двойные кавычки. Например, если вы хотите ввести следующий оператор SQL:
CREATE USER MAPPING FOR USER SERVER my_server OPTIONS(REMOTE_AUTHID 'my_id', REMOTE_PASSWORD 'my_password')Вы вводите следующий текст в окно командной строки UNIX:
db2 "CREATE USER MAPPING FOR ПОЛЬЗОВАТЕЛЬ SERVER мой_сервер OPTIONS(REMOTE_AUTHID 'мой_ID', REMOTE_PASSWORD 'мой_пароль')" - Операторы SQL, содержащие и двойные, и одинарные кавычки
- Если оператор SQL содержит и одинарные, и двойные кавычки:
- Заключите весь оператор в двойные кавычки
- Перед каждой двойной кавычкой в операторе добавьте обратную дробную черту.
Например, в таком операторе SQL:CREATE USER MAPPING FOR "local_id" SERVER my_server OPTIONS(REMOTE_AUTHID 'my_id', REMOTE_PASSWORD 'my_password')Вы вводите следующий текст в окно командной строки UNIX:db2 "CREATE USER MAPPING FOR \"local_id\" SERVER my_server OPTIONS(REMOTE_AUTHID 'my_id', REMOTE_PASSWORD 'my_password')"
В приведенном примере предполагается, что вы вводите операторы SQL из окна командной строки UNIX и передаете оператор в команду Db2, не используя опцию -f. Чтобы использовать команду Db2 с опцией -f для ввода операторов SQL из файла, введите первые операторы из каждого примера.
Из окна командной строки операционной системы Windows
Чтобы сохранить регистрозависимые значения при вводе команд в окне командной строки Microsoft Windows на сервере объединения, добавьте перед каждой двойной кавычкой обратную дробную черту. Например, пусть нужно создать псевдоним nick1 для таблицы Microsoft SQL Server weekly_salary. Эта таблица расположена в базе данных NORBASE. Локальная схема - my_schema.
db2 CREATE NICKNAME nick1
FOR NORBASE.\"my_schema\".\"weekly_salary\"Из командной строки или из прикладной программы Db2
Если вы задаете значение из командной строки или из прикладной программы Db2, для сохранения регистра значения можно заключать в правильно выбранные кавычки.
CREATE USER MAPPING FOR "local_id" SERVER my_server
OPTIONS(REMOTE_AUTHID 'my_id', REMOTE_PASSWORD 'my_password')