Поделиться через


Обработка результатов (ODBC)

Обработка результатов

  1. Получите сведения о результирующем наборе.

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

  3. Для каждой строки в результирующем наборе сделайте следующее.

    • Вызовите функцию SQLFetch, чтобы получить следующую строку.

    • Если используются привязанные столбцы, используйте данные, теперь доступные в привязанных буферах столбцов.

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

    • Получение данных из столбца типа text или image производится многократным вызовом функции SQLGetData.

  4. Когда функция SQLFetch указывает конец результирующего набора, возвращая SQL_NO_DATA, вызовите функцию SQLMoreResults, чтобы определить, доступен ли другой результирующий набор.

    • Если вернулось значение SQL_SUCCESS, то доступен другой результирующий набор.

    • Если вернулось значение SQL_NO_DATA, то больше нет результирующих наборов.

    • Если вернулось значение SQL_SUCCESS_WITH_INFO или SQL_ERROR, вызовом функции SQLGetDiagRec определите, есть ли выходные данные от инструкции PRINT или RAISERROR.

      Если в качестве выходных параметров используются привязанные параметры инструкции или возвращаемое значение хранимой процедуры, используйте данные, имеющиеся в буферах привязанного параметра. Кроме того, если используются привязанные параметры, то при каждом вызове функции SQLExecute или SQLExecDirect инструкция SQL будет выполняться S раз, где S — количество элементов в массиве привязанных параметров. Это значит, что придется обработать S наборов результатов, каждый из которых содержит все результирующие наборы, выходные параметры и коды возврата, обычно возвращаемые при выполнении отдельной инструкции SQL.

    ПримечаниеПримечание

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

  5. Можно также вызвать функцию Функция SQLFreeStmt с SQL_UNBIND, чтобы освободить все буферы связанных столбцов.

  6. Если есть еще один результирующий набор, перейдите к шагу 1.

ПримечаниеПримечание

Чтобы отменить обработку результирующего набора прежде, чем функция SQLFetch вернет значение SQL_NO_DATA, вызовите функцию SQLCloseCursor.

См. также

Другие ресурсы

Инструкции по обработке результатов (ODBC)