共用方式為


設定資料指標選項 (ODBC)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Platform System (PDW)

若要設定數據指標選項,請呼叫 SQLSetStmtAttr 來設定 或 SQLGetStmtAttr ,以取得控制數據指標行為的語句選項。

屬性 指定
SQL_ATTR_CURSOR_TYPE 正向、靜態、動態或索引鍵集驅動的數據指標類型
SQL_ATTR_CONCURRENCY 只讀、鎖定、使用時間戳開放式或使用值開放式的並行控制選項
SQL_ATTR_ROW_ARRAY_SIZE 在每個擷取中擷取的數據列數目
SQL_ATTR_CURSOR_SENSITIVITY 執行或未顯示其他連接所建立數據指標數據列更新的數據指標
SQL_ATTR_CURSOR_SCROLLABLE 可向前和向後捲動的數據指標

這些屬性的預設值(正向、只讀、數據列集大小為 1)不會使用伺服器資料指標。 若要使用伺服器數據指標,至少必須將其中一個屬性設定為預設值以外的值,而執行的語句必須是單一 SELECT 語句或包含單一 SELECT 語句的預存程式。 使用伺服器數據指標時,SELECT 語句無法使用伺服器數據指標不支援的子句:COMPUTE、COMPUTE BY、FOR BROWSE 和 INTO。

您可以藉由設定SQL_ATTR_CURSOR_TYPE和SQL_ATTR_CONCURRENCY,或設定SQL_ATTR_CURSOR_SENSITIVITY和SQL_ATTR_CURSOR_SCROLLABLE,來控制所使用的數據指標類型。 您不應該混合指定數據指標行為的兩種方法。

範例

A. 設定動態數據指標

下列範例會配置語句句柄、使用數據列版本設定開放式並行存取的動態數據指標類型,然後執行 SELECT。

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_DYNAMIC, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CONCURRENCY, SQLPOINTER)SQL_CONCUR_ROWVER, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, SELECT au_lname FROM authors", SQL_NTS);  

B. 設定可捲動的敏感數據指標

下列範例會配置語句句柄、設定可捲動、敏感數據指標,然後執行 SELECT

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
  
// Set the cursor options and execute the statement.  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SCROLLABLE, SQLPOINTER)SQL_SCROLLABLE, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SENSITIVITY, SQLPOINTER)SQL_INSENSITIVE, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, select au_lname from authors", SQL_NTS);  

另請參閱

執行查詢操作說明主題 (ODBC)