已建立結果集了嗎?

在大部分情況下,應用程式程式設計人員知道應用程式執行的陳述式是否建立結果集。 這種情況發生於應用程式使用程式設計人員撰寫的硬式編碼 SQL 陳述式。 這種情況通常發生於應用程式在執行階段建構 SQL 陳述式:程式設計人員可以輕易包含程式碼,並旗標要建構 SELECT 陳述式或 INSERT 陳述式。 在少數情況下,程式設計人員不可能知道陳述式是否建立結果集。 這種情況成立於應用程式提供使用者輸入與執行 SQL 陳述式的方式。 這種情況也成立於應用程式在執行階段建構陳述式執行程序。

在這種情況下,應用程式會呼叫 SQLNumResultCols,並判斷結果集中的資料行數目。 如果數目是 0,陳述式不會建立結果集;如果數目是任何其他數字,陳述式會建立結果集。

陳述式就緒或執行後,應用程式即可隨時呼叫 SQLNumResultCols。 但部分資料來源無法輕易描述陳述式就緒後建立的結果集,所以如果在陳述式就緒後且執行前,呼叫 SQLNumResultCols 會影響效能。

部分資料來源也支援判斷 SQL 陳述式傳回的結果集資料列數目。 若要這樣做,應用程式要呼叫 SQLRowCount。 資料列計數代表的確切數字是呼叫 SQLGetInfo 時傳回的 SQL_DYNAMIC_CURSOR_ATTRIBUTES2、SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2、SQL_KEYSET_CURSOR_ATTRIBUTES2 或 SQL_STATIC_CURSOR_ATTRIBUTES2 選項 (依資料指標類型而定) 所示。 此位元遮罩會指出每個資料指標類型傳回的資料列計數,是精確、約略或根本不可用。 SQLBulkOperationsSQLSetPos 的變更、定點更新或刪除陳述式,是否影響靜態或索引鍵集驅動資料指標的資料列計數,取決於之前所列相同選項的引數傳回的其他位元。 如需詳細資訊,請參閱 SQLGetInfo 函式說明。