Fetch sql что это

FETCH (Transact-SQL)

Получает определенную строку из серверного курсора Transact-SQL.

Fetch sql что это. Смотреть фото Fetch sql что это. Смотреть картинку Fetch sql что это. Картинка про Fetch sql что это. Фото Fetch sql что этоСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

NEXT
Возвращает строку результата сразу же за текущей строкой и перемещает указатель текущей строки на возвращенную строку. Если инструкция FETCH NEXT выполняет первую выборку в отношении курсора, она возвращает первую строку в результирующем наборе. NEXT является параметром по умолчанию выборки из курсора.

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

FIRST
Возвращает первую строку в курсоре и делает ее текущей.

LAST
Возвращает последнюю строку в курсоре, и делает ее текущей.

ABSOLUTE < n| @nvar>
Если n или @nvar является положительным, возвращает строку n строк из начала курсора и делает возвращенную строку новой текущей строкой. Если n или @nvar является отрицательным, возвращает строку n строк в конце курсора и делает возвращенную строку новой текущей строкой. Если n или @nvar равно 0, строки не возвращаются. n должен быть целочисленной константой, а @nvar должен иметь тип данных smallint, tinyint или int.

RELATIVE < n| @nvar>
Если n или @nvar является положительным, возвращает строку n строк после текущей строки и делает возвращенную строку новой текущей строкой. Если n или @nvar является отрицательным, возвращает строку n строк перед текущей строкой и делает возвращенную строку новой текущей строкой. Если n или @nvar равно 0, возвращает текущую строку. Если FETCH RELATIVE указано с n или @nvar, заданными с отрицательными числами или 0 в первой выборке, выполненной с курсором, строки не возвращаются. n должен быть целочисленной константой, а @nvar должен иметь тип данных smallint, tinyint или int.

GLOBAL
Указывает, что аргумент cursor_name ссылается на глобальный курсор.

cursor_name
Имя открытого курсора, из которого должна быть произведена выборка. Когда имеется как глобальный, так и локальный курсор с именем cursor_name, то cursor_name ссылается на глобальный курсор, если задано GLOBAL, и на локальный, если GLOBAL не задано.

@cursor_variable_name
Имя переменной курсора, ссылающейся на открытый курсор, из которого должна быть произведена выборка.

Комментарии

При использовании расширений курсора Transact-SQL DECLARE применимы следующие правила.

Разрешения

Разрешения FETCH по умолчанию предоставляются всем допустимым пользователям.

Примеры

A. Использование инструкции FETCH в простом курсоре

Б. Использование инструкции FETCH для сохранения значений в переменных

Следующий пример аналогичен примеру A, за исключением того, что выход инструкций FETCH сохраняется в локальных переменных, а не возвращается непосредственно клиенту. Инструкция PRINT объединяет переменные в одну строку и возвращает их клиенту.

В. Объявление курсора SCROLL и использование других параметров инструкции FETCH

Источник

FETCH (Transact-SQL)

Retrieves a specific row from a Transact-SQL server cursor.

Fetch sql что это. Смотреть фото Fetch sql что это. Смотреть картинку Fetch sql что это. Картинка про Fetch sql что это. Фото Fetch sql что этоTransact-SQL Syntax Conventions

Syntax

To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

Arguments

NEXT
Returns the result row immediately following the current row and increments the current row to the row returned. If FETCH NEXT is the first fetch against a cursor, it returns the first row in the result set. NEXT is the default cursor fetch option.

PRIOR
Returns the result row immediately preceding the current row, and decrements the current row to the row returned. If FETCH PRIOR is the first fetch against a cursor, no row is returned and the cursor is left positioned before the first row.

FIRST
Returns the first row in the cursor and makes it the current row.

LAST
Returns the last row in the cursor and makes it the current row.

ABSOLUTE < n| @nvar>
If n or @nvar is positive, returns the row n rows from the front of the cursor and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows before the end of the cursor and makes the returned row the new current row. If n or @nvar is 0, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, or int.

RELATIVE < n| @nvar>
If n or @nvar is positive, returns the row n rows beyond the current row and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows prior to the current row and makes the returned row the new current row. If n or @nvar is 0, returns the current row. If FETCH RELATIVE is specified with n or @nvar set to negative numbers or 0 on the first fetch done against a cursor, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, or int.

GLOBAL
Specifies that cursor_name refers to a global cursor.

cursor_name
Is the name of the open cursor from which the fetch should be made. If both a global and a local cursor exist with cursor_name as their name, cursor_name to the global cursor if GLOBAL is specified and to the local cursor if GLOBAL is not specified.

@cursor_variable_name
Is the name of a cursor variable referencing the open cursor from which the fetch should be made.

Remarks

When the Transact-SQL DECLARE cursor extensions are used, these rules apply:

If either FORWARD_ONLY or FAST_FORWARD is specified, NEXT is the only FETCH option supported.

The @@FETCH_STATUS function reports the status of the last FETCH statement. The same information is recorded in the fetch_status column in the cursor returned by sp_describe_cursor. This status information should be used to determine the validity of the data returned by a FETCH statement prior to attempting any operation against that data. For more information, see @@FETCH_STATUS (Transact-SQL).

Permissions

Permissions for FETCH default to any valid user.

Examples

A. Using FETCH in a simple cursor

B. Using FETCH to store values in variables

The following example is similar to example A, except the output of the FETCH statements is stored in local variables instead of being returned directly to the client. The PRINT statement combines the variables into a single string and returns them to the client.

C. Declaring a SCROLL cursor and using the other FETCH options

Источник

Функция SQLFetch

Соответствия
Представленная версия: соответствие стандартам ODBC 1,0: ISO 92

Сводка
SQLFetch извлекает следующий набор строк данных из результирующего набора и возвращает данные для всех связанных столбцов.

Синтаксис

Аргументы

статеменсандле
Входной Маркер инструкции.

Возвращаемое значение

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_ERROR или SQL_INVALID_HANDLE.

Диагностика

Для всех этих SQLSTATE, которые могут возвращать SQL_SUCCESS_WITH_INFO или SQL_ERROR (за исключением 01XXX SQLSTATE), SQL_SUCCESS_WITH_INFO возвращается в случае возникновения ошибки в одной или нескольких строках операции многострочные, а SQL_ERROR возвращается в случае возникновения ошибки в операции с одной строкой.

SQLSTATEОшибкаОписание
01000Общее предупреждениеИнформационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.)
01004Строковые данные, усеченные справаСтроковые или двоичные данные, возвращаемые для столбца, привели к усечению непустого символа или двоичных данных, отличных от NULL. Если это строковое значение, оно было усечено по правому краю.
01S01Ошибка в строкеПроизошла ошибка при выборке одной или нескольких строк.

(Функция возвращает SQL_SUCCESS_WITH_INFO.)

07006Нарушение атрибута ограниченного типа данныхЗначение данных столбца в результирующем наборе не может быть преобразовано в тип данных, указанный в TargetType в SQLBindCol.

Столбец 0 был привязан к типу данных SQL_C_BOOKMARK, а атрибуту инструкции SQL_ATTR_USE_BOOKMARKS задано значение SQL_UB_VARIABLE.

Столбец 0 был привязан, а атрибуту инструкции SQL_ATTR_USE_BOOKMARKS было присвоено значение SQL_UB_OFF.

08S01Сбой канала связиКанал связи между драйвером и источником данных, к которому был подключен драйвер, был неудачен до завершения обработки функции.
22001Строковые данные, усеченные справаЗакладка переменной длины, возвращаемая для столбца, усечена.
22002Требуемая, но не определенная переменная индикатораДанные NULL были получены в столбец, StrLen_or_IndPtr которого задается параметром SQLBindCol (или SQL_DESC_INDICATOR_PTR Set by SQLSetDescField или SQLSetDescRec), является пустым указателем.
22003Числовое значение вне допустимого диапазонаВозврат числового значения как числового или строки для одного или нескольких привязанных столбцов привело бы к усечению всего (в отличие от дробной части) числа.

дополнительные сведения см. в разделе преобразование данных из SQL в типы данных C в приложении г: типы данных.

22007Недопустимый формат даты и времениСимвольный столбец в результирующем наборе был привязан к структуре даты, времени или метки времени C, а значение в столбце является, соответственно, недействительной датой, временем или меткой времени.
22012Деление на нольВозвращено значение из арифметического выражения, результатом которого является деление на ноль.
22015Переполнение поля интервалапри назначении из точного числового значения или интервала SQL типа в тип C, который вызывается в качестве типа значения interval, приводит к утере значащих цифр в ведущем поле.

при выборке данных в тип c interval не было представления значения типа SQL в типе interval c.

22018Недопустимое символьное значение для спецификации приведенияСимвольный столбец в результирующем наборе был привязан к символьному буферу C, а столбец содержал символ, для которого в наборе символов буфера отсутствует представление.

(DM) SQLExecute, SQLExecDirect или SQLMoreResults были вызваны для статеменсандле и возвращены SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров.

(DM) указанный статеменсандле не находится в выполненном состоянии. Функция была вызвана без предварительного вызова SQLExecDirect, SQLExecute или функции каталога.

(DM) вызывается асинхронно исполняемая функция (не эта одна) для статеменсандле и все еще выполнялась при вызове этой функции.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для статеменсандле и возвращены SQL_NEED_DATA. Эта функция была вызвана перед отправкой данных для всех параметров или столбцов данных, выполняемых во время выполнения.

Комментарии

Дополнительные сведения см. в разделе блочные курсоры, прокручиваемые курсоры и обратная совместимость в приложении G: рекомендации по драйверам для обеспечения обратной совместимости.

Размещение курсора

После возврата SQLFetch текущая строка является первой строкой набора строк.

Правила, перечисленные в следующей таблице, описывают позиционирование курсора после вызова SQLFetch на основе условий, перечисленных во второй таблице этого раздела.

УсловиеПервая строка нового набора строк
Перед началом работы1
Ластресултров-ровсетсизе[1]После окончания
После окончанияПосле окончания

[1] при изменении размера набора строк между выборками это размер набора строк, который был использован с предыдущей выборкой.

[2] при изменении размера набора строк между выборками это размер набора строк, который использовался с новой выборке.

NotationЗначение
Перед началом работыКурсор блока располагается перед началом результирующего набора. Если первая строка нового набора строк находится перед началом результирующего набора, SQLFetch возвращает SQL_NO_DATA.
После окончанияКурсор блока располагается после конца результирующего набора. Если первая строка нового набора строк находится после конца результирующего набора, SQLFetch возвращает SQL_NO_DATA.
куррровсетстартНомер первой строки в текущем наборе строк.
ластресултровНомер последней строки в результирующем наборе.
ровсетсизеРазмер набора строк.

Например, предположим, что результирующий набор содержит 100 строк, а размер набора строк равен 5. В следующей таблице показан набор строк и код возврата, возвращаемый функцией SQLFetch для различных начальных позиций.

Текущий набор строкКод возвратаНовый набор строкчисло извлекаемых строк
Перед началом работыSQL_SUCCESSот 1 до 55
от 1 до 5SQL_SUCCESSот 6 до 105
от 52 до 56SQL_SUCCESSот 57 до 615
от 91 до 95SQL_SUCCESSот 96 до 1005
от 93 до 97SQL_SUCCESS98 до 100. Строки 4 и 5 массива состояния строки имеют значение SQL_ROW_NOROW.3
от 96 до 100SQL_NO_DATAОтсутствует.0
от 99 до 100SQL_NO_DATAОтсутствует.0
После окончанияSQL_NO_DATAОтсутствует.0

Возврат данных в связанных столбцах

Поскольку SQLFetch возвращает каждую строку, она помещает данные для каждого привязанного столбца в буфере, привязанном к этому столбцу. Если ни один из столбцов не привязан, SQLFetch не возвращает никаких данных, но перемещает блоковый курсор вперед. Данные можно по-прежнему получать с помощью SQLGetData. Если курсор является многострочные курсором (то есть SQL_ATTR_ROW_ARRAY_SIZE больше 1), SQLGetData можно вызвать только в том случае, если при вызове SQLGetInfo с инфотипе SQL_GETDATA_EXTENSIONS был возвращен SQL_GD_BLOCK. (Дополнительные сведения см. в разделе SQLGetData.)

Для каждого привязанного столбца в строке SQLFetch выполняет следующие действия:

Задает SQL_NULL_DATA буфера длины или индикатора и переходит к следующему столбцу, если данные имеют значение NULL. Если данные имеют значение NULL и ни один буфер индикатора не был привязан, SQLFetch ВОЗВРАЩАЕТ значение SQLSTATE 22002 (для переменной индикатора требуется, но не указано) для строки и переходит к следующей строке. Сведения о том, как определить адрес буфера длины и индикатора, см. в разделе «буферные адреса» в SQLBindCol.

Если данные для столбца не равны NULL, SQLFetch переходит к шагу 2.

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

Атрибут инструкции SQL_ATTR_MAX_LENGTH предназначен для уменьшения сетевого трафика. Обычно он реализуется с помощью источника данных, который усекает данные перед их возвратом по сети. Драйверы и источники данных не обязательно должны поддерживать их. Таким образом, чтобы гарантировать усечение данных до определенного размера, приложение должно выделить буфер этого размера и указать размер в аргументе кбвалуемакс в SQLBindCol.

Преобразует данные в тип, указанный TargetType в SQLBindCol.

Если данные были преобразованы в тип данных переменной длины, например символьный или двоичный, SQLFetch проверяет, превышает ли длина данных длину буфера данных. Если длина символьных данных (включая завершающий символ null) превышает длину буфера данных, SQLFetch усекает данные до длины буфера данных, чем длина символа завершения null. Затем значение NULL завершает данные. Если длина двоичных данных превышает длину буфера данных, SQLFetch усекает его до длины буфера данных. Длина буфера данных указывается с помощью BufferLength в SQLBindCol.

SQLFetch никогда не усекает данные, преобразованные в типы данных фиксированной длины; всегда предполагается, что длина буфера данных равна размеру типа данных.

Помещает в буфер данных преобразованные (и, возможно, усеченные) данные. Сведения о том, как определить адрес буфера данных, см. в разделе «буферные адреса» в SQLBindCol.

Помещает длину данных в буфер длины или индикатора. Если указатель индикатора и указатель длины были установлены в один и тот же буфер (как вызов SQLBindCol ), то длина записывается в буфер для допустимых данных, а SQL_NULL_DATA записывается в буфер для данных null. Если ни один буфер индикатора не был привязан, SQLFetch не возвращает длину.

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

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

Сведения о том, как определить адрес буфера длины и индикатора, см. в разделе «буферные адреса» в SQLBindCol.

Если данные усекаются во время преобразования без потери значащих цифр (например, вещественное число 1,234 усекается до целого числа после преобразования), SQLFetch ВОЗВРАЩАЕТ значение SQLSTATE 01S07 (усечение дробной части) и SQL_SUCCESS_WITH_INFO. Если данные усечены из-за слишком маленького размера буфера данных (например, строка «abcdef» помещается в 4-байтовый буфер), SQLFetch ВОЗВРАЩАЕТ значение SQLSTATE 01004 (усечение данных) и SQL_SUCCESS_WITH_INFO. Если данные усекаются из-за атрибута SQL_ATTR_MAX_LENGTH инструкции, SQLFetch возвращает SQL_SUCCESS и не ВОЗВРАЩАЕТ значение SQLSTATE 01S07 (Частичное усечение) или SQLSTATE 01004 (усечение данных). Если данные усекаются во время преобразования с потерей значащих цифр (например, если SQL_INTEGER значение больше 100 000 были преобразованы в SQL_C_TINYINT), SQLFetch возвращает SQLSTATE 22003 (числовое значение за пределами диапазона) и SQL_ERROR (если размер набора строк равен 1) или SQL_SUCCESS_WITH_INFO (если размер набора строк больше 1).

Содержимое привязанного буфера данных и буфера длины и индикатора не определено, если SQLFetch или SQLFetchScroll не возвращает SQL_SUCCESS или SQL_SUCCESS_WITH_INFO.

Массив статусов строк

Массив состояния строк используется для возврата состояния каждой строки в наборе строк. Адрес этого массива указывается с помощью атрибута инструкции SQL_ATTR_ROW_STATUS_PTR. Массив выделяется приложением и должен иметь столько же элементов, сколько указано в атрибуте инструкции SQL_ATTR_ROW_ARRAY_SIZE. Его значения задаются с помощью SQLFetch, SQLFetchScroll и SQLBulkOperations или SQLSetPos (за исключением случаев, когда они были вызваны после того, как курсор был помещен в SQLExtendedFetch). Если значение атрибута инструкции SQL_ATTR_ROW_STATUS_PTR является пустым указателем, эти функции не возвращают состояние строки.

Содержимое буфера массива строк состояния не определено, если SQLFetch или SQLFetchScroll не возвращает SQL_SUCCESS или SQL_SUCCESS_WITH_INFO.

В массиве состояния строк возвращаются следующие значения.

Значение массива состояния строкиОписание
SQL_ROW_SUCCESSСтрока была успешно получена и не изменилась со времени последней выборки из этого результирующего набора.
SQL_ROW_SUCCESS_WITH_INFOСтрока была успешно получена и не изменилась со времени последней выборки из этого результирующего набора. Однако в строке было возвращено предупреждение.
SQL_ROW_ERRORПроизошла ошибка при выборке строки.
SQL_ROW_UPDATED [1], [2] и [3]Строка была успешно получена и изменилась со времени последней выборки из этого результирующего набора. Если строка извлекается из этого результирующего набора или обновляется с помощью функции SQLSetPos, состояние изменяется на новое состояние строки.
SQL_ROW_DELETED [3]Строка была удалена с момента последней выборки из этого результирующего набора.
SQL_ROW_ADDED [4]Строка была вставлена с помощью SQLBulkOperations. Если строка извлекается из этого результирующего набора или обновляется с помощью функции SQLSetPos, ее состояние — SQL_ROW_SUCCESS.
SQL_ROW_NOROWНабор строк, перекрывающийся с концом результирующего набора, и ни одна строка не была возвращена, соответствующая этому элементу массива состояния строки.

[1] для набора ключей, смешанных и динамических курсоров, если значение ключа Обновлено, строка данных считается удаленной и добавляется новая строка.

[2] некоторые драйверы не могут обнаруживать обновления данных и поэтому не могут возвращать это значение. Чтобы определить, может ли драйвер обнаружить обновления для повторной выборки строк, приложение вызывает SQLGetInfo с параметром SQL_ROW_UPDATES.

[3] SQLFetch может возвращать это значение только в том случае, если оно смешано с вызовами SQLFetchScroll. Это происходит потому, что SQLFetch перемещается вперед по результирующему набору, а когда он используется исключительно, не выполняет повторное извлечение строк. Так как ни одна строка не перегружается, SQLFetch не обнаруживает изменения, внесенные в ранее полученные строки. Однако если SQLFetchScroll помещает курсор перед любыми ранее полученными строками, а SQLFetch используется для выборки этих строк, SQLFetch может обнаружить изменения в этих строках.

[4] возвращается только с помощью SQLBulkOperations. Не задается SQLFetch или SQLFetchScroll.

Буфер выборки строк

Буфер с извлечением строк используется для возврата количества извлекаемых строк, включая строки, для которых не было возвращено никаких данных из-за ошибки, произошедшей при их выборке. Иными словами, это число строк, для которых значение в массиве состояния строки не SQL_ROW_NOROW. Адрес этого буфера указывается с помощью атрибута инструкции SQL_ATTR_ROWS_FETCHED_PTR. Буфер выделяется приложением. Он задается SQLFetch и SQLFetchScroll. Если значение атрибута оператора SQL_ATTR_ROWS_FETCHED_PTR является пустым указателем, эти функции не возвращают число извлекаемых строк. Чтобы определить номер текущей строки в результирующем наборе, приложение может вызвать SQLGetStmtAttr с помощью атрибута SQL_ATTR_ROW_NUMBER.

Содержимое буфера, полученного в результате строк, не определено, если SQLFetch или SQLFetchScroll не возвращают SQL_SUCCESS или SQL_SUCCESS_WITH_INFO, за исключением случаев, когда возвращается SQL_NO_DATA, в этом случае значение в буфере, выбранном в качестве буфера, устанавливается равным 0.

Обработка ошибок

Ошибки и предупреждения могут применяться к отдельным строкам или ко всей функции. Дополнительные сведения о диагностических записях см. в разделе Diagnostics and SQLGetDiagField.

Ошибки и предупреждения для всей функции

Если ошибка применяется ко всей функции, например SQLSTATE HYT00 (время ожидания истекло) или SQLSTATE 24000 (недопустимое состояние курсора), SQLFetch возвращает SQL_ERROR и применимое значение SQLSTATE. Содержимое буферов наборов строк не определено, а позиции курсора не меняются.

Если предупреждение применяется ко всей функции, SQLFetch возвращает SQL_SUCCESS_WITH_INFO и применимое значение SQLSTATE. Записи о состоянии для предупреждений, применимых ко всей функции, возвращаются перед записями состояния, которые применяются к отдельным строкам.

Ошибки и предупреждения в отдельных строках

Если ошибка (например, SQLSTATE 22012 (деление на ноль)) или предупреждение (например, SQLSTATE 01004 (усечение данных)) применяется к одной строке, SQLFetch выполняет следующие действия:

Устанавливает соответствующий элемент массива состояния строки для SQL_ROW_ERROR ошибок или SQL_ROW_SUCCESS_WITH_INFO для предупреждений.

Добавляет ноль или более записей состояния, содержащих SQLSTATE для ошибки или предупреждения.

Задает поля номера строки и столбца в записях состояния. Если SQLFetch не может определить номер строки или столбца, он устанавливает это число в SQL_ROW_NUMBER_UNKNOWN или SQL_COLUMN_NUMBER_UNKNOWN соответственно. Если запись Status не относится к определенному столбцу, SQLFetch устанавливает номер столбца в значение SQL_NO_COLUMN_NUMBER.

SQLFetch возобновляет выборку строк до тех пор, пока не будут получены все строки в наборе строк. Он возвращает SQL_SUCCESS_WITH_INFO, если только ошибка не возникает в каждой строке набора строк (не включая строки с состоянием SQL_ROW_NOROW). в этом случае возвращается SQL_ERROR. В частности, если размер набора строк равен 1, а в этой строке возникает ошибка, SQLFetch возвращает SQL_ERROR.

SQLFetch возвращает записи состояния в порядке номеров строк. То есть он возвращает все записи состояния для неизвестных строк (если они есть); Затем он возвращает все записи состояния для первой строки (если таковой имеется), а затем возвращает все записи состояния для второй строки (если есть) и т. д. Записи состояния для каждой строки упорядочиваются в соответствии с обычными правилами упорядочения записей о состоянии. Дополнительные сведения см. в разделе «последовательность записей состояния» в SQLGetDiagField.

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

В следующих разделах описывается взаимодействие SQLFetch с дескрипторами.

Сопоставления аргументов

Драйвер не устанавливает никакие поля дескриптора на основе аргументов SQLFetch.

Другие поля дескриптора

SQLFetch использует следующие поля дескрипторов.

Поле дескриптораDesc.Поле вЗадать через
SQL_DESC_ARRAY_SIZEардзаголовокАтрибут инструкции SQL_ATTR_ROW_ARRAY_SIZE
SQL_DESC_ARRAY_STATUS_PTRIRDзаголовокАтрибут инструкции SQL_ATTR_ROW_STATUS_PTR
SQL_DESC_BIND_OFFSET_PTRардзаголовокАтрибут инструкции SQL_ATTR_ROW_BIND_OFFSET_PTR
SQL_DESC_BIND_TYPEардзаголовокАтрибут инструкции SQL_ATTR_ROW_BIND_TYPE
SQL_DESC_COUNTардзаголовокАргумент columnNumber объекта SQLBindCol
SQL_DESC_DATA_PTRардrecordsАргумент таржетвалуептр объекта SQLBindCol
SQL_DESC_INDICATOR_PTRардrecordsStrLen_or_IndPtr аргумент в SQLBindCol
SQL_DESC_OCTET_LENGTHардrecordsАргумент BufferLength в SQLBindCol
SQL_DESC_OCTET_LENGTH_PTRардrecordsStrLen_or_IndPtr аргумент в SQLBindCol
SQL_DESC_ROWS_PROCESSED_PTRIRDзаголовокАтрибут инструкции SQL_ATTR_ROWS_FETCHED_PTR
SQL_DESC_TYPEардrecordsАргумент TargetType в SQLBindCol

Все поля дескриптора также можно задать с помощью SQLSetDescField.

Отдельные буферы длины и индикатора

SQLFetch определяет, задается ли в приложении отдельные буферы длины и индикатора. В этом случае, если данные не равны NULL, SQLFetch устанавливает буфер индикатора равным 0 и возвращает длину в буфере длины. Если данные имеют значение NULL, SQLFetch устанавливает буфер индикатора в значение SQL_NULL_DATA и не изменяет буфер длины.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *