共用方式為


資料指標資料列集大小

ODBC 資料指標不限制為一次只能提取一個資料列。這類資料指標可在每個對 SQLFetchSQLFetchScroll 的呼叫中擷取多個資料列。與 Microsoft SQL Server 之類的用戶端/伺服器資料庫搭配使用時,一次擷取數個資料列會更有效率。在提取時所傳回的資料列數目稱為資料列集大小,是藉由使用 SQLSetStmtAttr 的 SQL_ATTR_ROW_ARRAY_SIZE 來指定。

SQLUINTEGER uwRowsize;
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);

資料列集大小大於 1 的資料指標稱為區塊資料指標。

有兩個選項可用來繫結區塊資料指標的結果集資料行:

  • 資料行取向的繫結

    每個資料行都會繫結至變數的陣列。每個陣列所擁有的元素數目則都與資料列集大小相當。

  • 資料列取向的繫結

    陣列是使用保存資料列中所有資料行之資料和指標的結構而建立。陣列所擁有的結構數目與資料列集大小相當。

使用資料行取向或資料列取向的繫結時,每個對 SQLFetchSQLFetchScroll 的呼叫都會使用所擷取資料列集的資料來填滿繫結的陣列。

SQLGetData 也可以用來從區塊資料指標擷取資料行資料。因為 SQLGetData 一次處理一個資料列,所以必須呼叫 SQLSetPos,先將資料列集中的特定資料列設定為目前的資料列,才能呼叫 SQLGetData

SQL Server Native Client ODBC 驅動程式提供使用資料列集快速擷取整個結果集的最佳化作業。若要使用此最佳化作業,請在呼叫 SQLExecDirectSQLExecute 時,將資料指標屬性設定為預設值 (順向、唯讀、資料列集大小 = 1)。SQL Server Native Client ODBC 驅動程式會設定預設的結果集。若要在不捲動的情況下將結果傳送到用戶端時,這種做法比伺服器資料指標有效率。在執行陳述式之後,請增加資料列集大小,並使用資料行取向或資料列取向的繫結。如此可讓 SQL Server 有效率地使用預設的結果集,將結果資料列傳送到用戶端,而 SQL Server Native Client ODBC 驅動程式可繼續不斷地從用戶端上的網路緩衝區提取資料列。

請參閱

概念