使用 QL Server 預設結果集
預設的 ODBC 資料指標屬性為:
SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);
每當這些屬性設定為預設值時,SQL Server Native Client ODBC 驅動程式就會使用 SQL Server 預設結果集。預設結果集可用於任何受到 SQL Server 支援的 SQL 陳述式,而且是將整個結果集傳送到用戶端的最有效率的方法。
SQL Server 2005 導入了對 Multiple Active Result Sets (MARS) 的支援;應用程式現在可針對每個連接擁有一個以上的使用中預設結果集。預設不會啟用 MARS。
在 SQL Server 2005 以前,預設結果集不能在相同連接上支援多個作用中陳述式。在連接上執行 SQL 陳述式以後,伺服器要等到結果集中的所有資料列都已經處理過後,才能在該連接上接受來自用戶端的命令 (取消其餘結果集的要求除外)。若要取消已部分處理之結果集的其餘部分,請呼叫 SQLCloseCursor 或 SQLFreeStmt 並將 fOption 參數設定為 SQL_CLOSE。若要完成已部分處理的結果集,並測試另一個結果集是否存在,請呼叫 SQLMoreResults。如果 ODBC 應用程式在已經處理完預設結果集之前嘗試執行連接控制代碼上的命令,此呼叫會產生 SQL_ERROR 並傳回 SQLGetDiagRec 的呼叫:
szSqlState: "HY000", pfNativeError: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]
Connection is busy with results for another hstmt."