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


40.8 Глава 5. DB2 CLI Functions (Функции CLI DB2)

40.8.1 Параметр SQLBindFileToParam - Связать ссылку файла большого объекта с большим объектом

Последний параметр функции CLI SQLBindFileToParam() - IndicatorValue - описан как "output (deferred)". На самом деле он "input (deferred)".

|40.8.2 SQLColAttribute - Возврат атрибутов столбца

| | |

|Ниже приводятся дополнения к столбцу "Описание" для |аргументовSQL_DESC_AUTO_UNIQUE_VALUE и SQL_DESC_UPDATABLE: |

|SQL_DESC_AUTO_UNIQUE_VALUE
|Для всех типов данных SQL DB2 в NumericAttributePtr |возвращается SQL_FALSE. В настоящее время CLI DB2 не может определить, |является ли столбец столбцом идентификации, поэтому всегда возвращает |SQL_FALSE. Это ограничение не полностью соответствует спецификациям |ODBC. Будущие версии CLI DB2 для серверов Unix и Windows будут |поддерживать автообеспечение уникальности.

|SQL_DESC_UPDATABLE
|Указывает, является ли тип данных столбца изменяемым: | |

|40.8.3 SQLGetInfo - Получить общую информацию

| |

|Ниже приводится исправление информации в разделе "Usage" под заголовком |"Information Returned by SQLGetInfo": |

|SQL_DATABASE_NAME (строка)
|Имя текущей используемой базы данных
|Прим.:
Эта строка совпадает со строкой, возвращаемой оператором SELECT CURRENT |SERVER в системах, не являющихся системами хоста. Для баз данных хоста, |таких как DB2 for OS/390 или DB2 for OS/400, возвращаемая строка = имя базы |данных DCS, которое задается в команде CATALOG DCS DATABASE DIRECTORY на шлюзе |DB2 Connect. |
|

|40.8.4 SQLGetLength - Получение длины строчного значения

| |

|Ниже приводится правильный текст примечания к Таблице 113 "SQLGetLength |Arguments" :

|Примечание: a Для данных DBCLOB длина выражается в |символах.

40.8.5 SQLNextResult - Связать следующий набор результатов с другим хэндлом оператора

К Главе 5 "DB2 CLI Functions" (Функции CLI DB2) надо добавить следующий текст:

40.8.5.1 Назначение

Спецификация: DB2 CLI 7.x

40.8.5.2 Синтаксис

SQLRETURN   SQLNextResult     (SQLHSTMT StatementHandle1
                               SQLHSTMT StatementHandle2);

40.8.5.3 Аргументы функции


Табл. 13. Аргументы SQLNextResult

Тип данных Аргумент Использование Описание
SQLHSTMT StatementHandle входной Хэндл оператора.
SQLHSTMT StatementHandle входной Хэндл оператора.

40.8.5.4 Использование

Хранимая процедура возвращает несколько наборов результатов, оставляя после выхода один или несколько указателей открытыми. Доступ к первому набору результатов всегда осуществляется путем использования хэндла оператора, вызвавшего хранимую процедуру. Если возвращается несколько наборов результатов, для описания и считывания набора результатов можно использовать либо SQLMoreResults(), либо SQLNextResult().

SQLMoreResults() используется для закрытия указателя для первого набора результатов и позволяет обработку следующего набора результатов, а SQLNextResult() перемещает следующий набор результатов в StatementHandle2 без закрытия указателя при StatementHandle1. Обе функции возвращают SQL_NO_DATA_FOUND, если нет считываемых наборов результатов.

Использование SQLNextResult() позволяет обрабатывать наборы результатов в любом порядке после того, как они были перенесены на другие хэндлы операторов. Смешанные вызовы SQLMoreResults() и SQLNextResult() разрешены до тех пор, пока не исчерпаются указатели (открытые наборы результатов) на StatementHandle1.

Когда SQLNextResult() возвращает SQL_SUCCESS, следующий набор результатов больше не связан с StatementHandle1. Вместо этого следующий набор результатов связывается с StatementHandle2, как если бы SQLExecDirect() только что успешно обработала запрос к StatementHandle2. Поэтому указатель может быть описан с использованием SQLNumResultSets(), SQLDescribeCol() или SQLColAttribute().

После того, как была вызвана SQLNextResult(), набор результатов, теперь связанный с StatementHandle2, удаляется из цепочки оставшихся результатов и не может быть снова использован ни в SQLNextResult(), ни в SQLMoreResults(). Это означает, что для 'n' наборов результатов SQLNextResult() может быть вызвана успешно максимум 'n-1' раз.

Если SQLFreeStmt() вызывается с опцией SQL_CLOSE или SQLFreeHandle() вызывается с установленным для HandleType SQL_HANDLE_STMT, все находящиеся в состоянии ожидания на этом хэндле наборы результатов отбрасываются.

SQLNextResult() возвращает SQL_ERROR, если у StatementHandle2 есть открытый указатель или если StatementHandle1 и StatementHandle2 не находятся на одном и том же соединении. Если возвращаются ошибки или предупреждения, SQLError() должна всегда вызываться с StatementHandle1.

Прим.:
SQLMoreResults() работает также с параметризованным запросом с массивом значений входных параметров, заданным при помощи SQLParamOptions() и SQLBindParameter(). Однако SQLNextResult() не поддерживает такой способ.

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

40.8.5.6 Диагностика


Табл. 14. SQLSTATE для SQLNextResult

SQLSTATE Описание Объяснение
40003 08S01 Ошибка связи. Ошибка связи между прикладной программой и источником данных до выполнения функции.
58004 Непредвиденная системная ошибка. Неисправимая системная ошибка.
HY001 Ошибка выделения памяти. DB2 CLI не в состоянии выделить память, необходимую для выполнения или завершения функции.
HY010 Ошибочная последовательность вызова функций.

Функция была вызвана во время операции обработки данных (SQLParamData(), SQLPutData()).

У StatementHandle2 есть открытый связанный с ним указатель.

Функция была вызвана из операции SQL, ограниченной BEGIN COMPOUND и END COMPOUND.

HY013 Непредвиденная ошибка при работе с памятью. CLI DB2 не сумел получить доступ к памяти, необходимой для выполнения или завершения функции.
HYT00 Истек срок ожидания. Истек срок ожидания возврата набора результатов источником данных. Истечение времени поддерживается только в системах без многозадачности, таких как Windows 3.1 и Macintosh System 7. Срок ожидания задается при помощи атрибута SQL_ATTR_QUERY_TIMEOUT для SQLSetConnectAttr().

40.8.5.7 Ограничения

Для параметризованных запросов можно использовать только SQLMoreResults().

40.8.5.8 Ссылки

|40.8.6 SQLSetEnvAttr - Задать атрибут среды

|

|Ниже приведен дополнительный атрибут среды, который должен находится в |разделе "Environment Attributes" после "Usage": |

|SQL_ATTR_KEEPCTX
|Это 32-битное целое число, которое задает, следует ли сохранять контекст |при освобождении хэндла среды. Значение этого атрибута должно |задаваться на уровне среды. Его можно использовать в многопоточных |программах для управления контекстами, связанными с соединениями, ресурсами |баз данных и передачей данных для каждого потока. Возможные |значения: |

|

|Прим.:
Это расширение IBM. |
|

|40.8.7 SQLSetStmtAttr - Задать опции, связанные с оператором

| |

|Информацию об атрибуте оператора SQL_ATTR_QUERY_TIMEOUT надо заменить на |следующую: |

|SQL_ATTR_QUERY_TIMEOUT (DB2 CLI v2)
|32-битное целое значение - срок ожидания в секундах выполнения оператора |SQL до возврата в программу. Эту опцию можно задать и использовать для |прерывания длительных запросов. Значение 0 означает бесконечный срок |ожидания. DB2 CLI поддерживает ненулевые значения на всех платформах, |допускающих многопоточность. |


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