Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных.doc
Скачиваний:
114
Добавлен:
16.03.2016
Размер:
5.67 Mб
Скачать

22.4.2. Операторы sql для управления соединениями

Как отмечалось выше, в эту группу входят операторы CONNECT,SET CONNECTIONиDISCONNECT.

Оператор connect

Оператор определяется следующими синтаксическими правилами:

CONNECT TO connection_target

connection_target ::= SQL_server_name

[ AS connection_name ]

[ USER connection_user_name ]

| DEFAULT

Здесь SQL_server_name– это литерально заданная символьная строка, идентифицирующая сервер, к которому требуется подключиться. Смысл (и формат) этого имени определяется в реализации.

189 Каждому соединению соответствует одна и только одна сессия. В сообществе SQL эти термины часто используются попеременно для обозначения одного и того же. Более строгие блюстители терминологии утверждают, что термин подключение относится к сетевому пути между клиентом и сервером, а ессия – это контекст, в котором работает SQL-сервер.

В необязательном разделе ASуказываемое имя (connection_name) выступает в роли временного имени соединения, которое впоследствии может быть использовано в операторахSET CONNECTIONиDISCONNECT. Если в оператореCONNECTразделASне содержится, то по умолчаниюconnection_nameсовпадает сSQL_server_name.

В необязательном разделе USERуказываемое имя (connection_user_name) идентифицирует пользователя, от имени которого устанавливается соединение. При отсутствии разделаUSERв качествеconnection_user_nameпо умолчанию принимается текущийauthID. В стандарте допускается, что реализация может ограничить возможные значенияconnection_user_name(например, потребовать, чтобы это имя всегда совпадало с текущимauthID).

Эффект использования оператора в форме CONNECT TO DEFAULTпочти не отличается от результата действия системы при отсутствии какого-либо явного требования соединения. (Напомним, что соединение по умолчанию неявно устанавливается при попытке выполнения первого оператора SQL, требующего соединения.) Однако имеется одно важное отличие. Если соединение по умолчанию устанавливается неявно, а затем вдруг прерывается из-за какой-то ошибки, то оно автоматически переустанавливается при выполнении следующего оператора SQL. Если же соединение по умолчанию устанавливается явным образом, то автоматическое повторное установление соединения после его разрыва не производится.

Оператор set connection

Оператор определяется следующими синтаксическими правилами:

SET CONNECTION connection_object

connection_object::= { connection_name | DEFAULT }

Условием успешного выполнения операции является наличие отложенного установленного соединения с именем connection_nameили отложенного установленного соединения по умолчанию. В этом случае текущее соединение становится отложенным, а указанное отложенное соединение – текущим.

Оператор disconnect

Оператор имеет следующий синтаксис:

DISCONNECT { connection_object | ALL | CURRENT }

Необходимым условием для возможности ликвидации соединения является отсутствие активной транзакции в этом соединении.

Если в операторе указывается connection_object, то соответствующее имя должно соответствовать установленному (текущему или отложенному) соединению. Если указываетсяCURRENT, то должно существовать текущее соединение.

Если оператор применяется к текущему соединению, то это соединение ликвидируется, и ни одно соединение не является текущим. В таком случае для продолжения работы необходимо установить текущее соединение при помощи операторов CONNECTилиSET CONNECTION.

Если в операторе указывается ALL, то ликвидируются все соединения, включая текущее.