Skip to content

Latest commit

 

History

History
56 lines (36 loc) · 3.77 KB

File metadata and controls

56 lines (36 loc) · 3.77 KB
title Process Results (ODBC)
description Processing Results - Process Results
author markingmyname
ms.author maghan
ms.date 03/03/2017
ms.service sql
ms.subservice native-client
ms.topic reference
helpviewer_keywords
processing results [ODBC]

Processing Results - Process Results

[!INCLUDESQL Server Azure SQL Database Synapse Analytics PDW]

Processing results in an ODBC application involves first determining the characteristics of the result set, then retrieving the data into program variables by using either SQLBindCol or SQLGetData.

To process results

  1. Retrieve result set information.

  2. If bound columns are used, for each column you want to bind to, call SQLBindCol to bind a program buffer to the column.

  3. For each row in the result set:

    • Call SQLFetch to get the next row.

    • If bound columns are used, use the data now available in the bound column buffers.

    • If unbound columns are used, call SQLGetData one or more times to get the data for unbound columns after the last bound column. Calls to SQLGetData should be in increasing order of column number.

    • Call SQLGetData multiple times to get data from a text or image column.

  4. When SQLFetch signals the end of the result set by returning SQL_NO_DATA, call SQLMoreResults to determine if another result set is available.

    • If it returns SQL_SUCCESS, another result set is available.

    • If it returns SQL_NO_DATA, no more result sets are available.

    • If it returns SQL_SUCCESS_WITH_INFO or SQL_ERROR, call SQLGetDiagRec to determine if the output from a PRINT or RAISERROR statement is available.

      If bound statement parameters are used for output parameters or the return value of a stored procedure, use the data now available in the bound parameter buffers. Also, when bound parameters are used, each call to SQLExecute or SQLExecDirect will have executed the SQL statement S times, where S is the number of elements in the array of bound parameters. This means that there will be S sets of results to process, where each set of results comprises all of the result sets, output parameters, and return codes usually returned by a single execution of the SQL statement.

    [!NOTE]
    When a result set contains compute rows, each compute row is made available as a separate result set. These compute result sets are interspersed within the normal rows and break normal rows into multiple result sets.

  5. Optionally, call SQLFreeStmt with SQL_UNBIND to release any bound column buffers.

  6. If another result set is available, go to Step 1.

Note

To cancel processing a result set before SQLFetch returns SQL_NO_DATA, call SQLCloseCursor.

See Also

Retrieve Result Set Information (ODBC)