使用 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 引進了多個作用中結果集的支援, (MARS) ;應用程式現在可以針對每個連線有多個作用中的預設結果集。 預設不會啟用 MARS。

在 SQL Server 2005 之前,預設結果集不支援相同連線上的多個作用中語句。 在連接上執行 SQL 陳述式以後,伺服器要等到結果集中的所有資料列都已經處理過後,才能在該連接上接受來自用戶端的命令 (取消其餘結果集的要求除外)。 若要取消部分處理結果集的其餘部分,請呼叫 SQLCloseCursorSQLFreeStmt ,並將 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."  

另請參閱

如何實作資料指標