使用 SQL Server 預設結果集

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

在 SQL Server 2005 (9.x) 之前,預設結果集不支援相同連接上的多個使用中語句。 在連接上執行 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."  

另請參閱

如何實作資料指標