設定資料指標選項 (ODBC)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics 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);