Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по субд Крупская.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

74 Пакет dbms_pipe: создание программных каналов и управление ими.

Если канал не существует, то при первом указании его имени в SEND_MESSAGEон создается неявным образом. В PL/SQL версии 2.2 и выше каналы можно создавать и удалять явно, с помощью процедурCREATE_PIPEиREMOVE_PIPE

Програмные каналы

Программный каналпредставляет собой структуру данных, находящуюся вразделяемом пуле системной глобальной области(SGA –system global area) памяти. Поэтому он не занимает память, в которую могут помещаться другие объекты базы данных при их считывании с диска. Когда необходимо освободить дополнительное пространство разделяемого пула, каналы автоматически уничтожаются.

Однако это касается только тех каналов, в которых не находятся сообщения, ожидающие считывания (хотя канал можно удалить из SGA и явным образом, с помощью процедуры PURGE, описанной ниже). Алгоритмом уничтожения программных каналов является алгоритм LRU

Общие и частные каналы

Каналы, создаваемые неявно с помощью SEND_MESSAGE, называютсяобщими(public). Любой пользователь, имеющий полномочие EXECUTE на модульDBMS_PIPEи знающий имя канала, может посылать и принимать по нему сообщения. Доступ же кчастным(private) каналам ограничивается пользователем, создавшим этот канал, хранимыми процедурами, выполняющимися на основании набора привилегий владельца этого канала, и пользователями, присоединившимися как SYSDBA или INTERNAL.

Если канал успешно создан, CREATE_PIPEвозвращает ноль. Если канал уже существует, а текущий пользователь имеет привилегии, необходимые для доступа к нему, то возвращается ноль и данные, находящиеся в канале, остаются без изменений. Если существует общий канал с указанным именем или частный канал, имеющий то же имя и принадлежащий другому пользователю, то устанавливается ошибка и функция завершается неуспешно

75 Архитектура odbc и коды возврата

следует отметить тот факт, что различные СУБД представляют собственные APIдля взаимодействия с базами данных. ПрикладныеAPIвключают наборы функций, обеспечивающих программиста разнообразными типами доступа к базе данных, такими как: подключение, выполнение операторов, выборка отдельных строк данных из результирующего множества запросов. Недостатком такого подхода является отсутствие универсальности – программа должна быть обработана предкомпилятором и связана сAPI, поставляемым в составе конкретной целевой СУБД.

Чтобы упорядочить данный подход, фирма Microsoftразработала стандарт, получивший названиеOpenDatabase Connectivity – (ODBC). ТехнологияODBCпредусматривает использование единого интерфейса для доступа к смешанным базам данныхSQL, причемSQLрассматривается как базовое стандартное средство доступа к данным

Общая структура ODBC включает в себя следующие элементы:

Приложение. Выполняет обработку данных и вызов функций библиотекиODBCдля отправкиSQL– операторов в СУБД и выборки возвращаемой СУБД информации.

Менеджер драйверов. Этот компонент выполняет загрузку драйверов по требованию приложения. Представляет собой библиотекуDLL.

Драйверы баз данных – Эти компоненты обрабатывают вызовы функцийODBCи направляютSQL– запросы в конкретные источники данных, а также возвращают полученные результаты приложению.

Источники данных – Этот компонент содержит те данные, доступ к которым необходим пользователю приложения. Данные сохраняются в базе данных, контролируемой целевой СУБД, операционной системой, а также сетевыми сервисами ОС

Коды возврата

Все функции ODBCвозвращают коды, чтобы показать в каком состоянии выполнения находится та или иная функция. Код возврата илиRETCODEуказывает на то, был ли вызов функции ошибочным или нет не указывает точной причины возникновения той или иной ошибки

SQL_SUCCESS

Функция выполнена успешно, информация об ошибке отсутствует

SQL_SUCCESS_WITH_INFO

Функция выполнена успешно, однако есть некоторая предупреждающая информация

SQL_NO_DATA_FOUND

Все строки результирующего множества извлечены. Это не является ошибкой, но указывает, что больше не осталось информации для выборки

SQL_ERROR

Ошибка в процессе выполнения данной функции. Имеется дополнительная информация об ошибке для восстановления.

SQL_INVALID_HANDLE

Возвращается функцией ODBCв случае, если какой-нибудь из идентификаторов-параметров данной функции является недействительным

SQL_STILL_EXECUTING

Возвращается какой-либо асинхронно выполняющейся функцией, находящейся в процессе выполнения

SQL_NEED_DATA

Возвращается функциями исполнения SQL– оператора в случае определения параметров операторов во время выполнения.