Установление связи с СУБД
Назначение
Перед тем, как начать работать с БД, пользовательская программа обязана выполнить процедуру связи с СУБД и регистрации. Для этого используется оператор CONNECT, устанавливающий соединение с сервером СУБД.
Синтаксис
<соединение с СУБД>::=
EXEC SQL CONNECT [ <режим канала>]
:<имя пользователя> [ IDENTIFIED BY :<пароль >]
[AT <переменная типа «соединение» >] [USING : <имя сервера>];
<режим канала> : = EXCLUSIVE | OPTIMISTIC | {SHARED | AUTOCOMMIT }
<имя пользователя> :: = <переменная основного языка>
<пароль >::= <переменная основного языка>
<имя сервера >:: =<переменная основного языка>
Описание
-
Оператор
CONNECTдолжен быть первым исполняемым SQL-оператором встроенного языка, т.е. все другие SQL-операторы могут физически, но не логически предшествовать операторуCONNECT. -
<Режим канала>задает способ обработки транзакций в данном соединении. По умолчанию используется режимEXCLUSIVE. -
<Имя пользователя>– переменная типа char. Задает пользователя, под именем которого будет выполняться доступ к СУБД по данному каналу (соединению). Имя должно содержать не более 18 символов. -
<Пароль>– переменная типа char. Задает пароль пользователя, указанного в переменной<имя пользователя>. Длина пароля не должна превышать 66 символов. Пароль может указываться совместно с именем пользователя в переменной<имя пользователя>через косую черту (/). Тогда параметр<пароль>должен отсутствовать.Примечание
Параметр
IDENTIFIED BY:<пароль>не задается, если пользователь с именем<имя пользователя>зарегистрирован в БД без пароля. -
Значение переменных
<пароль>и<имя пользователя>должно быть определено до выполнения оператора CONNECT. -
Программа обязательно должна проверять результат соединения с СУБД (например, посмотреть значение переменной SQLCODE), т.к. в случае неудачного соединения с СУБД дальнейшая ее работа не имеет смысла.
-
<Имя сервера>– переменная типа char, объявленная в секцииEXEC SQL DECLARE. Она задает имя ЛИНТЕР-сервера, где находится БД, с которой требуется установить соединение (см. документ «Сетевые средства»). Имя ЛИНТЕР-сервера не должно содержать более 8 символов. Если параметр<имя сервера>не задан, соединение осуществляется с активной БД по умолчанию на локальном сервере (если таковая есть) либо на удаленном ЛИНТЕР-сервере по умолчанию (удаленным ЛИНТЕР-сервером является первый сервер в списке ЛИНТЕР-серверов в файле сетевой конфигурации) (см. документ «Сетевые средства»). -
<Имя соединения>– переменная встроенного языка, необъявленная или объявленная в директиве встроенного языкаDECLARE DATABASE, либо символьная константа. Задает имя переменной, связываемой с открываемым каналом соединения с СУБД. В дальнейшем, при необходимости работы с каналом, на него можно ссылаться по этому имени. К одной БД может быть установлено несколько соединений. Если параметр<имя соединения>опущен, можно открыть только один неименованный канал соединения с СУБД. -
Программа может установить одновременно несколько соединений как с одной, так и с несколькими БД (локальной или удаленной). При этом значение имени соединения в конструкции
[AT <переменная типа «соединение»>]для каждого соединения должно быть уникальным (таким образом, в программе может использоваться только один оператор соединения без конструкции[AT <переменная типа «соединение»>]). -
Для получения информации о ЛИНТЕР-сервере используется оператор
EXEC LINTER GET SERVER(см. «Получение характеристик ЛИНТЕР-сервера»).
Примечание
Режим OPTIMISTIC устарел (использовать не рекомендуется).