Переменная типа «соединение»
Назначение
Оператор декларирует наличие переменной типа «соединение» с указанным именем.
Синтаксис
<переменная типа 'соединение'>::= 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;
…
}