Переменная типа «соединение»
Назначение
Оператор декларирует наличие переменной типа «соединение» с указанным именем.
Синтаксис
< переменная типа 'соединение' >::= EXEC SQL DECLARE < имя соединения > DATABASE; < имя соединения >::= < идентификатор > | < строковый литерал >
Описание
-
Оператор
DECLARE DATABASE
является декларативным, поэтому может находиться вне блоков основного языка. -
В процессе работы пользовательская программа может использовать доступ к нескольким БД. Доступ к конкретной БД выполняется после предварительного соединения программы с БД. Каждому соединению можно присвоить уникальное логическое имя (имя БД) для того, чтобы при последующих запросах к этой БД ссылаться уже только на имя соединения, не указывая каждый раз полную информацию, необходимую для соединения. Для этих целей средства встроенного SQL включают тип данных «соединение».
-
Имя соединения известно только программе и не имеет ничего общего с реальным именем БД.
-
Объявленная переменная типа «соединение» (
DATABASE
) может использоваться в операторе CONNECT и последующих выполняемых операторах для идентификации логической связи с заданной БД. -
Эта переменная может быть использована в операторах
CONNECT
и в конструкции AT< имя соединения >
. -
Использование данного оператора для объявления переменной не является необходимым, переменная неявно объявляется оператором
CONNECT
.
Примечания
-
Имя переменной типа «соединение» может совпадать с именем переменной основного языка.
-
Неявное объявление переменной типа «соединение» выполняется при использовании его в операторе
CONNECT
. -
В том случае, когда используется единственное соединение с БД, логическая связь с сервером БД может быть установлена без объявления переменной типа «соединение» (см. использование оператора
CONNECT
без конструкцииAT < имя соединения >
).
Пример
EXEC SQL INCLUDE SQLCA; EXEC SQL DECLARE DB1 DATABASE; /* объявление вне блоков основного языка */ void f() { /* имя соединения задано идентификатором встроенного языка (case insensitive) */ EXEC SQL DECLARE DB2 DATABASE; /* имя соединения задано строковым литералом (case sensitive) */ EXEC SQL DECLARE 'DataBase Sale' DATABASE; … }