Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция SET CONNECTION

Инструкция SET CONNECTION позволяет пользователям переключаться между несколькими открытыми соединениями на одном или нескольких серверах баз данных.


Синтаксис SQL 2003
SET CONNECTION {DEFAULT | имя_соединения]

Ключевые слова

имя соединения

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

DEFAULT

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

Описание

Эта команда не завершает соединение. Она лишь переключается от текущего соединения к указанному (оно становится текущим) или от текущего соединения к соединению, заданному по умолчанию. При переключении между соединениями старое соединение становится бездействующим (без внесения изменений), а новое становится активным.


Общие правила

Инструкция SET CONNECTION не создает соединения. Она просто переключает контекст. Для создания нового соединения используйте команду CONNECT, а для завершения соединения используйте команду DISCONNECT.


Советы и хитрости программирования

Команда SET CONNECTION используется нечасто, поскольку многие пользователи подключаются программно при помощи ODBC, JDBC или других методов соединения. Однако на тех платформах, которые поддерживают инструкцию SET CONNECTION, эта команда может быть очень полезна для быстрой смены свойств соединения без разрыва текущих соединений.


DB2

Платформа DB2 поддерживает следующую базовую форму инструкции SET CONNECTION.

SET CONNECTION имя_сервера

Эта команда DB2 не поддерживает ключевое слово DEFA ULT, но во всех прочих отношениях совместима со стандартом ANSI. Значение в параметре имя_сервера должно ссылаться на соединение, созданное ранее при помощи инструкции CONNECT. Ниже приводится полностью встроенный код SQL для DB2, который демонстрирует инструкции CONNECT и SET CONNECTION.

EXEC SQL CONNECT TO SQLNUTSHELL;

Открывается соединение с SQLNUTSHELL. Будут выполняться инструкции, ссылающиеся на объекты на сервере SQLNUTSHELL */

EXEC SQL CONNECT TO DB2DEV;

Открывается соединение с DB2DEV. Теперь будут выполняться инструкции, ссылающиеся на объекты на сервере DB2DEV */

EXEC SQL SET CONNECTION SQLNUTSHELL;

Теперь возвращаемся к соединению с сервером SQLNUTSHELL и выполняем ссылающиеся на объекты на SQLNUTSHELL, Соединение с DB2DEV по-прежнему доступно, но бездействует, */


MySQL

Не поддерживается.


Oracle

Не поддерживается.


PostgreSQL

Не поддерживается.


SQL Server

Платформа SQL Server поддерживает инструкцию SET CONNECTION, но только во встроенном коде SQL, а не в средстве создания произвольных запросов SQL Query Analyzer. Хотя SQL Server поддерживает весь синтаксис SQL 2003 при встраивании кода SQL в другие программы, например в С++, эта возможность используется нечасто. Большинство предпочитает использовать вместо нее команду USE. Синтаксис, специфический для данной платформы, следующий.

SET CONNECTION имя_соединения

Эта команда не поддерживает ключевое слово DEFAULT, но во всем остальном совпадает с инструкцией стандарта ANSI. Значение в параметре имя соединения (в форме константы или переменной) должно ссылаться на соединение, указанное ранее в инструкции CONNECT.

Ниже приводится полная программа на TSQL для SQL Server, демонстрирующая инструкции CONNECT, DISCONNECT и SET CONNECTION.

EXEC SQL CONNECT TO Chicago, pubs AS chicagol USER sa;
EXEC SQL CONNECT TO new_york.pubs AS new_york1 USER read-only;
// открываются соединения с серверами Chicago и new_york
EXEC SQL SET CONNECTION chicagol;
EXEC SQL SELECT name FROM employee INTO :name;
// соединение chicagol становится активным, и с ним ведется работа в данном сеансе
EXEC SQL SET CONNECTION new_york1;
EXEC SQL SELECT name FROM employee INTO ;name;

Соединение new_york1 становится активным, и с ним ведется работа в данном сеансе.

EXEC SQL DISCONNECT ALL;

Завершаются все сеансы, В качестве альтернативы вы можете использовать — две команды DISCONNECT, по одной на каждое соединение.

Источник