Замечания по выпуску


36.5 Глава 3. Using Advanced Features

36.5.1 Writing Multi-Threaded Applications

В конец раздела "Multi-Threaded Mixed Applications" (Создание многопоточных программ) надо добавить:
Прим.:НЕ рекомендуется использовать размер стека по умолчанию; вместо этого лучше увеличить размер по крайней мере до 256 000. При вызове функции DB2 требуется размер стека минимум 256 000. Размер стека надо задать так, чтоб он был достаточным и для вашей программы, и для вызова функции DB2.

36.5.2 Scrollable Cursors

В раздел "Scrollable Cursors" (Указатели с возможностью прокрутки) надо добавить следующую информацию:

36.5.2.1 Поддержка указателей с возможностью прокрутки на стороне сервера для OS/390

Клиент UDB для платформ Unix, Windows и OS/2 при применении к базе данных OS/390 Версии 7 поддерживает указатели с возможностью изменения и прокрутки на стороне сервера. Для обращения к указателю OS/390 с возможностью прокрутки в трехуровневой среде на клиенте и на шлюзе должны работать с DB2 UDB Версии 7.1, FixPak 3 или новее.

Существует два программных интерфейса программ, обеспечивающих доступ к указателям с возможностью прокрутки: ODBC и JDBC. Интерфейс JDBC позволяет обращаться только к статическим указателям с прокруткой; интерфейс ODBC позволяет обращаться как к статическим, так и к управляемым клавиатурой указателям с прокруткой на стороне сервера.

Атрибуты указателя

В следующей таблице приведены значения по умолчанию атрибутов указателей OS/390 Версии 7 в ODBC.

Табл. 12. Атрибуты по умолчанию для указателей OS/390 в ODBC
Тип указателя Чувствит. указателя Возможность изменения указателя Одноврем. указателя Возможность прокрутки указателя
только-впередa не задается без возможности изменения одноврем. только для чтения без возможности прокрутки
статический нечувствит. без возможности изменения одноврем. только для чтения с возможностью прокрутки
управляемый чувствит. с возможностью изменения одноврем. значений с возможностью прокрутки

a Только-вперед - это поведение по умолчанию указателя с прокруткой без условия FOR UPDATE. Если для указателя только-вперед задать FOR UPDATE, будет создан указатель с возможностью изменения, одновременностью блокировок, без возможности прокрутки.


Поддерживаемые направления выборки

Все направления выборки ODBC поддерживаются с помощью интерфейсов SQLFetchScroll или SQLExtendedFetch.

Изменение управляемого указателя

Управляемый указатель - это указатель с возможностью изменения. Драйвер CLI добавляет условие FOR UPDATE к запросу, кроме случаев, когда запрос введен как запрос SELECT ... FOR READ ONLY или условие FOR UPDATE уже есть. Реализованный в DB2 для OS/390 управляемый указатель - это указатель одновременности значений. Указатель одновременности значений выражается в оптимистичной блокировке, то есть блокировка не производится, пока не будет предпринята попытка произвести изменение или удаление. При попытке произвести изменение или удаление сервер базы данных сравнивает предыдущие значения, извлеченные программой, с текущими значениями в основной таблице. Если эти значения совпадают - изменение или удаление успешно выполняется. Если значения не совпадают - операция завершается неудачно. Если происходит ошибка, программа должна опять запросить значения и, если нужно, повторить операцию изменения или удаления.

Программа может изменять управляемый указатель двумя способами:

Устранение неисправностей в программах, созданных до появления поддержки указателей с возможностью прокрутки

Так как поддержка указателей с возможностью прокрутки появилась недавно, у некоторых прикладных программ ODBC, работавших с предыдущими версиями UDB для OS/390 или UDB для Unix, Windows, и OS/2 может измениться поведение или производительность. Это происходит из-за того, что до появления поддержки указателей с прокруткой, программы, требовавшие такой указатель, получали указатель только-вперед. Чтобы восстановить поведение программы до появления поддержки указателей с прокруткой, задайте следующие ключевые слова конфигурации в файле db2cli.ini:

Табл. 13. Значения ключевых слов конфигурации, восстанавливающие поведение программ до появления поддержки указателей с возможностью прокрутки
Задание ключевого слова конфигурации Описание
PATCH2=6 Возвращает сообщение, что указатели с возможностью прокрутки (как управляемые, так и статические) не поддерживаются. CLI автоматически заменяет требование указателя с прокруткой на требование указателя только-вперед.
DisableKeysetCursor=1 Запрещает управляемые указатели с прокруткой с обеих сторон - сервера и клиента. Можно использовать, чтобы драйвер CLI предоставлял программе статический указатель, когда затребован управляемый указатель.
UseServerKeysetCursor=0 Запрещает управляемые указатели на стороне сервера для программ, использующих библиотеку управляемых указателей клиентской стороны, чтобы симулировать управляемый указатель. Используйте эту возможность, только если возникли проблемы с управляемым указателем на стороне сервера, так как указатель на стороне клиента приводит к значительным издержкам и обычно имеет худшую производительность, чем указатель на стороне сервера.

36.5.3 Using Compound SQL

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

   Все операторы SQL, которые могут быть подготовлены динамически и не являются 
запросами, могут выполняться как операторы внутри составного оператора. 
    Примечание: Внутри составного оператора Atomic Compound SQL не разрешены
    также операторы SQL savepoint, release savepoint и rollback to savepoint.
    И наоборот, оператор Atomic Compound SQL нельзя использовать в точке сохранения.

36.5.4 Using Stored Procedures

36.5.4.1 Написание хранимой процедуры в CLI

Недокументированное ограничение на хранимые процедуры CLI:

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

36.5.4.2 Хранимые процедуры и автоматическое связывание CLI

Следующая информация дополняет приведенную в книге:

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

UNIX
db2 bind <BNDPATH>/@db2cli.lst blocking all

Windows и OS/2
db2bind "%DB2PATH%\bnd\@db2cli.lst" blocking

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


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]