Программирование >>  Sql: полное руководство 

1 ... 180 181 182 [ 183 ] 184 185 186 ... 264


прерывать выполнение запроса. В OCI имеется функция оЬгеак (), которая может быть вызвана асинхронно для прерывания запроса. Таким образом, если во время выполнения запроса программа имеет возможность перехватить управление (обычно для этого устанавливается таймер, который по истечении заданного времени генерирует прерывание), она может также вызвать функцию оЬгеак (), чтобы асинхронно прекратить выполнение запроса.

OCI и OracleS

с появлением OracleS исходный вариант OCI был заменен новым, более современным и гораздо более сложным интерфейм. В новом варианте OCI используются многие концепции стандартов SQL/CLI и ODBC, включая идентификацию объектов интерфейса с помощью дескрипторов. В OCI входят сотни функций, и описание всех их, конечно же, выходит за рамки нашей книги. В следующих параграфах рас-скывается о важнейших функциях, используемых большинством приложений.

Дескрипторы OCI

В новом варианте OCI поддерживается иерархия дескрипторов, помогающих управлять взаимодействием между приложением и базой данных, подобная иерархии дескрипторов SQL/CLI, описанной ранее в этой главе. Вот перечень дескрипторов:

Дескриптор среды. Дескриптор самого верхнего уровня, связанный со средой взаимодействия между приложением и OCI.

Дескриптор контекста услуги. Идентифицирует подключение к серверу Oracle.

Дескриптор сервера. Идентифицирует сервер баз данных Oracle (для приложений, поддерживающих одновременно несколько сеансов подключения).

Дескриптор сессии. Идентифицирует активный сеанс подключения к Oracle (для приложений, поддерживающих одновременно несколько сеансов).

Дескриптор инструкции Идентифицирует обрабатываемую инструкцию SQL

Дескриптор контекста привязки. Идентифицирует входной параметр инструкции.

Дескриптор результирующего столбца. Идентифицирует столбец таблицы результатов запроса.

Дескриптор транзакции. Идентифицирует выполняемую транзакцию SQL

Дескриптор сложного объекта. Используется для получения данных из объекта базы данных Oracle.

Дескриптор ошибки. Используется для обработки ошибок OCI. Приложение управляет дескрипторами OCI посредством функций, описанных в

табл. 19.7. Функции создания и освобождения дескрипторов работают так же, как и их аналоги из SQL/CLI. Функции получения и установки значений атрибутов тоже аналогичны функциям SQL/CLI, устанавливающим и считывающим значения атрибутов среды, сеанса и инструкции.

Таблица (9.7. Функции OCI, служащие Управления два(рч функция Описание

ociHandleAlloc () Создает дескриптор для использования в программе ociHandleFree () Освобожцает ранее созданный дескриптор ociAttrGet () Возвращает значение заданного атрибута дескриптора

£ClAttrSet О Устанавливает значение заданного атрибута дескриптора



Дескриптор ошибки используется для получения информации от 0С1. Как зравило, он передается функциям 0С1 в качестве параметра. Профамма проверяет <од завершения функции OCI, и если он указывает на наличие ошибки, извлекает /1нформацию об ошибке из определяемой дескриптором диагностической сфуктурь[ тосредством функции OCIErrorGet ().

Подключение к серверу Oracle

Процедура инициализации ОС! и подключения к базе данных Oracle аналогична процедуре подключения к базе данных в SQL/CLI, ODBC или DB-Library. Функции OCI, предназначенные для управления подключением, перечислены в табл. 19 8. Прежде всего приложение вызывает функцию ociinitialize () для инициализации интерфейса. Далее вызывается функция ociEnvInit () для получения дескриптора среды. Как и в ODBC, все взаимодействие программы с сервером осуществляется в контексте среды, идентифицируемой этим дескриптором.

После этих начальных действий большинство приложений вызывает функцию ОС I Logon (), чтобы подключиться к серверу Oracle. Последующие функции OCI выполняются в контексте этого сеанса, и для определения привилегий доступа к базе данньгх Oracle в них используется указанный в функции oclLogon () идентификатор пользователя. Для завершения сеанса вызывается функция ociLogoff () Другие функции предназначены для более гибкого управления сеансами в приложениях с несколькими потоками и подключениями Функция ociServerVersion () позволяет определить версию Огас1ефункция OCIPasswordChange () изменяет пароль текущего пользователя

Таблица 19.8. Функции ОС1, служащие для инициализации OCI и подключения к Oracle

Функция Описание

OCIInitialize О Инг>ииализирует 0С[

OCiEnvlnit () Инициализирует дескриптор среды для взаимодействия с OCI

OCiLogon () Подключается к серверу Oiacle

OClLogof f О Завершает сеанс подключения

OCiServerAttach О Подключается к серверу Oracle с возможностью открытия нескольких сеансов

OClServerDetach () Отключается от сервера Oracle

OCiServerVersion () Возвращает информацию о версии сервера

OCiSessionBcsgin О Начинает новый пользовательский сеанс работы с сервером, к которому уже было произведено подключения

OCIPasswordChange О Изменяет пароль пользователя для доступа к серверу

OCiSessionEnd () Завершает начатый ранее пользовательский сеанс

Выполнение инсп-рукций

Функции OCI, перечисленные в табл. 19.9, используются для выполнения инструкций SQL. Функции OCIStmtPrepare О и OCIStmtExecute () служат ДЛЯ подготовки и вьшолнения инсфукции. Кроме того, функция OCIStmtExecute () может дополнительно использоваться для того, чтобы получить описание таблицы результатов запроса (подобно инсфукции DESCRIBE встроенного SQL), не выполняя сам



запрос, - для этого ей передается специальный флаг. Если же функция ocistmtExe-cute О выполняется в нормальном режиме, OCI автоматически предоставляет программе описание таблицы результатов запроса Оно доступно через дескриптор выполняемой инструкции и является одним из ее атрибутов.

Функции OCIBmdbyPos () и OClBmdbyName () используются для связывания программных переменных с параметрами инструкции, задаваемыми либо по номерам, либо по именам. Эти функции автоматически создают дескрипторы контекста привязки, но можно передавать им и заранее созданные дескрипторы. Остальные функции реализуют более сложные механизмы привязки, включая привязку массивов значений параметров и сложных объектных типов данных. ОСЬподцерживает также динамическую привязку параметров и столбцов таблицы результатов запроса, соответствующую технологии отложенной передачи параметров, поддерживаемой в SQL/CLI и ODBC и описанной ранее в этой главе.

Таблица 19.9, Функции ОО, служащие для обработки инструкций и их параметров

Функция Описание

oCIStmtPrepare () Подготавливает инструкцию к выполнению

ociStmtExecute () Выполняет ранее подготовленную инструкцию

ociBreak () Отменяет текущую выполняемую сервером функцию OCI

OClBindbyPos () Выполняет привязку параметра по его номеру

OClBmdbyName () Выполняет привязку параметра по его имени

OClGetBindinf о () Получает имена переменных, связанных с параметрами и инди-

каторами значений ndll

OCiBindArrayOf Struct () Выполняет привязку массива для передачи набора значений

параметров

OCIBindDynamic () Регистрирует функцию обратного вызова, которая будет выпол-

нять динамическую привязку параметра

OCiBindObject () Предоставляет дополнительную информацию о привязке пара-

метра, имеющего сложный объектный тип данных

ocistmtGetPiceinf о () Возвращает информацию о значении динамического параметра

(или динамически связываемого столбца в таблице результатов запроса), которое потребовалось OCI при выполнении инструкции

OClstmtSetPicelnfо () Передает OCI информацию (буфер, длина, индикатор значений

NULL и т п ) о значении динамического параметра (или динамически связываемого столбца в таблице результатов запроса),

которое потребовалось OCI при выполнении инструкции

Обработка результатов запроса

Функции 0С1, описанные в габл. 19.10, используются для обработки результатов запроса. Функция oclDef meByPos () связывает профаммную переменную со столбцом таблицы результатов запроса, идентифицируемым по номеру. Другие функции поддерживают динамическую (на этапе выполнения) привязку столбцов, привязку массивов значений столбцов (для операций, связанных с наборами записей) и привязку столбцов, имеющих сложные объектные типы данных. Функция OClStmt-Fetch О является аналогом инсфукции fetch - она извлекает строку из таблицы результатов запроса.



1 ... 180 181 182 [ 183 ] 184 185 186 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика