如何:處理結果 (ODBC)

處理結果

  1. 擷取結果集資訊。

  2. 如果使用繫結資料行,則針對您要繫結到的每個資料行呼叫 SQLBindCol,將程式緩衝區繫結到該資料行。

  3. 針對結果集中的每個資料列:

    • 呼叫 SQLFetch 以取得下一個資料列。

    • 如果是使用繫結資料行,請使用繫結資料行緩衝區中目前可用的資料。

    • 如果是使用未繫結資料行,請呼叫 SQLGetData 一或多次,以取得最後一個繫結資料行之後未繫結資料行的資料。對 SQLGetData 的呼叫應該以資料行號碼的遞增順序進行。

    • 呼叫 SQLGetData 多次,以從文字或影像資料行取得資料。

  4. SQLFetch 藉由傳回 SQL_NO_DATA 來表示達到結果集的結尾時,請呼叫 SQLMoreResults 來判斷是否仍有其他的結果集可以使用。

    • 如果該函數傳回 SQL_SUCCESS,表示有其他可用的結果集。

    • 如果該函數傳回 SQL_NO_DATA,表示沒有其他可用的結果集。

    • 如果該函數傳回 SQL_SUCCESS_WITH_INFO 或 SQL_ERROR,請呼叫 SQLGetDiagRec 來判斷是否可以使用來自 PRINT 或 RAISERROR 陳述式的輸出。

      如果繫結陳述式參數用於預存程序的輸出參數或傳回値,請使用繫結參數緩衝區中目前可用的資料。此外,在使用繫結參數時,每個 SQLExecuteSQLExecDirect 的呼叫都會執行 SQL 陳述式 S 次,其中 S 是繫結參數陣列中的元素數。這代表將要處理 S 個結果集,其中每個結果集都是由 SQL 陳述式的單一執行通常會傳回的結果集、輸出參數和傳回碼等所有項目而組成。

    [!附註]

    當結果集包含計算資料列時,每個計算資料列都可以提供為個別的結果集。這些計算結果集會散佈在一般的資料列內,將一般的資料列分隔成多個結果集。

  5. 或者也可以使用 SQL_UNBIND 呼叫SQLFreeStmt,以釋放任何繫結的資料行緩衝區。

  6. 如果有其他可用的結果集,請到步驟 1。

[!附註]

若要在 SQLFetch 傳回 SQL_NO_DATA 之前取消結果集的處理,請呼叫 SQLCloseCursor

請參閱

其他資源