Большинство описанных выше функций генерируют результат. Результат может быть либо результирующим множеством, либо числом строк, на которые воздействовал оператор.
Результирующее множество представляет собой набор строк и столбцов, которые были определены SQL – оператором или функцией каталога.
После создания, результирующее множество, тем не менее, располагается на сервере базы данных и требует извлечения прикладной программой клиента. Продвижение по строкам результирующего множества возможно посредством курсора. Курсор отмечает текущую позицию в результирующем множестве. Продвижение в пределах результирующего множества выполняется относительно позиции курсора.
Курсор автоматически генерируется для каждого результирующего множества. Непосредственно после создания результирующего множества, курсор устанавливается перед первой строкой данных. Для продвижения курсора следует вызывать функцию SQLFetch(). Данная функция продвигает курсор вперед на одну строку до тех пор, пока он не будет установлен за последней строкой результирующего множества.
Прежде чем выбрать данные из результирующего множества прикладной программе может понадобиться некоторая информация о нём.
В ODBC существует несколько таких функций, в данном же пособии рассматриваются только две из них.
Для определения числа столбцов, которые были возвращены с помощью подготовленного или выполненного оператора, прикладная программа выполняет функцию SQLNumResultCols(), которая имеет следующий синтаксис:
RETCODE SQLNumResultCols (hstmt, pccol)
Таблица 32 Параметры SQLNumResultCols
Тип
Аргумент
Использование
Описание
HSTMT
hstmt
Вход
Идентификатор оператора
SWORD*
pccol
Выход
Число столбцов в
результирующем множестве
Для возвращения числа строк, на которые воздействовал SQL – оператор, прикладная программа вызывает функцию SQLRowCount(). Данная функция возвращает число строк на которые воздействовал оператор update, insert или delete и имеет следующий синтаксис:
RETCODE SQLRowCount (hstmt, pcrow)
Таблица 33 Параметры SQLRowCount()
Тип
Аргумент
Использование
Описание
HSTMT
hstmt
Вход
Идентификатор оператора
SDWORD*
pcrow
Выход
Для операторов update, insert или delete определяет число строк на которые воздействовал оператор, или -1, если число таких строк не определяется. Для других операций драйвер может определить pcrow. Например, некоторые источники данных могут возвращать число строк, которые были возвращены оператором select или функцией каталога до извлечения этих строк. Однако много источников не могут возвращать число строк в результирующем множестве до их извлечения. Следовательно, прикладная программа не должна полагаться на результаты, возвращаемые в SQLRowCount().