共用方式為


SQLSetStmtAttr

SQL Server Native Client ODBC 驅動程式不支援混合 (索引鍵集/動態) 資料指標模型。 如果設定的值不等於 0,使用 SQL_ATTR_KEYSET_SIZE 設定索引鍵值大小的嘗試將會失敗。

應用程式會在所有語句上設定SQL_ATTR_ROW_ARRAY_SIZE,以宣告 SQLFetchSQLFetchScroll 函數呼叫上傳回的資料列數目。 在表示伺服器資料指標的陳述式上,驅動程式會使用 SQL_ATTR_ROW_ARRAY_SIZE 決定伺服器所產生之資料列區塊的大小以滿足來自資料指標的提取要求。 在動態資料指標的區塊大小內,如果交易隔離等級足以確保可重複讀取已認可的交易,資料列成員資格與排序是固定的。 在此值指出的區塊之外,資料指標是完全動態的。 伺服器資料指標區塊大小是完全動態的,而且可以在提取處理的任何點變更。

SQLSetStmtAttr 和資料表值參數

SQLSetStmtAttr 可用來在應用程式參數描述元 (APD) 中設定SQL_SOPT_SS_PARAM_FOCUS,再存取資料表值參數資料行的描述元欄位。

如果嘗試將SQL_SOPT_SS_PARAM_FOCUS設定為不是資料表值參數的參數序數,SQLSetStmtAttr 會傳回SQL_ERROR,並使用 SQLSTATE = HY024 和訊息「無效屬性值」建立診斷記錄。 當傳回 SQL_ERROR 時,SQL_SOPT_SS_PARAM_FOCUS 不會變更。

將 SQL_SOPT_SS_PARAM_FOCUS 設定為 0 會還原參數之描述項記錄的存取權。

SQLSetStmtAttr 也可以用來設定SQL_SOPT_SS_NAME_SCOPE。 如需詳細資訊,請參閱本主題稍後的「SQL_SOPT_SS_NAME_SCOPE」一節。

如需詳細資訊,請參閱 備妥語句的資料表值參數中繼資料

如需資料表值參數的詳細資訊,請參閱 資料表值參數 (ODBC)

疏鬆資料行的 SQLSetStmtAttr 支援

SQLSetStmtAttr 可用來設定SQL_SOPT_SS_NAME_SCOPE。 For more information, see the SQL_SOPT_SS_NAME_SCOPE section, later in this topic.For more information about sparse columns, see Sparse Columns Support (ODBC).

陳述式屬性

SQL Server Native Client ODBC 驅動程式也支援下列驅動程式特定的語句屬性。

SQL_SOPT_SS_CURSOR_OPTIONS

SQL_SOPT_SS_CURSOR 屬性會指定驅動程式是否會在資料指標上使用驅動程式專屬的效能選項。 設定這些選項時,不允許使用 SQLGetData。 預設值為 SQL_CO_OFF。 ValuePtr值的類型為 SQLLEN。

ValuePtr 描述
SQL_CO_OFF 預設值。 停用快速順向、唯讀資料指標和自動擷取,可在順向唯讀資料指標上啟用 SQLGetData 。 當 SQL_SOPT_SS_CURSOR_OPTIONS 設定為 SQL_CO_OFF 時,資料指標類型將不會變更。 也就是說,快速順向資料指標仍是快速順向資料指標。 若要變更資料指標類型,應用程式現在必須使用 /SQL_ATTR_CURSOR_TYPE來設定不同的資料指標類型 SQLSetStmtAttr
SQL_CO_FFO 啟用快速順向、唯讀資料指標、停用順向唯讀資料指標上的 SQLGetData
SQL_CO_AF 在任何資料指標類型上啟用自動擷取選項。 針對語句控制碼設定此選項時, SQLExecuteSQLExecDirect 會產生隱含 的 SQLFetchScroll (SQL_FIRST) 。 資料指標會開啟,而且第一個批次的資料列會在伺服器的單一往返中傳回。
SQL_CO_FFO_AF 使用自動擷取選項啟用快速順向資料指標。 這在同時指定 SQL_CO_AF 和 SQL_CO_FFO 時相同。

設定這些選項時,如果伺服器偵測到已經提取最後一個資料列,則會自動關閉資料指標。 應用程式仍必須呼叫 SQLFreeStmt (SQL_CLOSE) 或 SQLCloseCursor,但驅動程式不需要將關閉通知傳送至伺服器。

如果選取清單包含 textNtextimage 資料行,則快速順向資料指標會轉換成動態資料指標,而且允許 SQLGetData

SQL_SOPT_SS_DEFER_PREPARE

SQL_SOPT_SS_DEFER_PREPARE 屬性會決定語句是否已立即備妥或延後,直到執行 SQLExecuteSQLDescribeColSQLDescribeParam 為止。 在 SQL Server 7.0 和更早版本中, (不會延遲準備) 忽略此屬性。 ValuePtr值的類型為 SQLLEN。

ValuePtr 描述
SQL_DP_ON 預設值。 呼叫SQLPrepare 函式之後,語句準備會延後,直到執行SQLExecutesqlDescribeParam) (SQLDescribeCol 或 SQLDescribeParam作業為止。
SQL_DP_OFF 一旦執行 SQLPrepare ,語句就會立即備妥。

SQL_SOPT_SS_REGIONALIZE

SQL_SOPT_SS_REGIONALIZE 屬性用於決定陳述式層級的資料轉換。 將日期、時間和貨幣值轉換為字元字串時,此屬性會使驅動程式遵從用戶端的地區設定。 轉換是從原生資料類型SQL Server為字元字串。

ValuePtr值的類型為 SQLLEN。

ValuePtr 描述
SQL_RE_OFF 預設值。 此驅動程式不會使用用戶端地區設定,將日期、時間和貨幣資料轉換成字元字串資料。
SQL_RE_ON 將日期、時間和貨幣資料轉換成字元字串資料時,此驅動程式會使用用戶端地區設定。

地區轉換設定適用於貨幣、數值、日期和時間資料類型。 此轉換設定只有在貨幣、數值、日期或時間值轉換為字元字串時,才會套用到輸出轉換。

注意

當 SQL_SOPT_SS_REGIONALIZE 陳述式選項開啟時,驅動程式會針對目前的使用者使用地區設定的登錄設定。 如果應用程式藉由呼叫 SetThreadLocale,則驅動程式不接受目前線程的地區設定。

變更資料來源的地區行為可能會導致應用程式失敗。 剖析日期字串並預期日期字串如 ODBC 定義之方式顯示的應用程式,可能會受到變更此值的負面影響。

SQL_SOPT_SS_TEXTPTR_LOGGING

SQL_SOPT_SS_TEXTPTR_LOGGING屬性會切換包含 文字影像 資料之資料行的作業記錄。 ValuePtr值的類型為 SQLLEN。

ValuePtr 描述
SQL_TL_OFF 停用 對文字影像 資料執行的作業記錄。
SQL_TL_ON 預設值。 啟用 對文字影像 資料執行的作業記錄。

SQL_SOPT_SS_HIDDEN_COLUMNS

SQL_SOPT_SS_HIDDEN_COLUMNS屬性會在結果集中公開SQL Server SELECT FOR BROWSE 語句中隱藏的資料行。 此驅動程式預設不會公開這些資料行。 ValuePtr值的類型為 SQLLEN。

ValuePtr 描述
SQL_HC_OFF 預設值。 FOR BROWSE 資料行會從結果集隱藏起來。
SQL_HC_ON 公開 FOR BROWSE 資料行。

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 屬性會傳回查詢通知要求的訊息文字。

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 屬性會指定用於查詢通知要求的選項。 這些是使用 name=value 語法在字串中指定,如下所示。 應用程式會負責建立此服務以及在佇列外部讀取通知。

查詢通知選項字串的語法為:

service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]

例如:

service=mySSBService;local database=mydb

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 屬性會指定查詢通知維持作用中的秒數。 預設值是 432000 秒 (5 天)。 ValuePtr值的類型為 SQLLEN。

SQL_SOPT_SS_PARAM_FOCUS

SQL_SOPT_SS_PARAM_FOCUS 屬性會指定後續 SQLBindParameter、SQLGetDescField、SQLSetDescField、SQLGetDescRec 和 SQLSetDescRec 呼叫的焦點。

SQL_SOPT_SS_PARAM_FOCUS 的類型是 SQLULEN。

預設值為 0,表示這些呼叫處理的參數會對應到 SQL 陳述式中的參數標記。 設定為資料表值參數的參數號碼時,這些呼叫會處理該資料表值參數的資料行。 設定為非資料表值參數之參數號碼的值時,這些呼叫會傳回錯誤 IM020:「參數焦點沒有參考資料表值參數」。

SQL_SOPT_SS_NAME_SCOPE

SQL_SOPT_SS_NAME_SCOPE 屬性會指定後續目錄函數呼叫的名稱範圍。 SQLColumns 傳回的結果集取決於SQL_SOPT_SS_NAME_SCOPE的設定。

SQL_SOPT_SS_NAME_SCOPE 的類型是 SQLULEN。

ValuePtr 描述
SQL_SS_NAME_SCOPE_TABLE 預設值。

使用資料表值參數時,指出應該傳回實際資料表的中繼資料。

使用疏鬆資料行功能時,SQLColumns 只會傳回非疏鬆 column_set 成員的資料行。
SQL_SS_NAME_SCOPE_TABLE_TYPE 表示應用程式需要資料表類型 (而非實際資料表) 的中繼資料 (目錄函數應該傳回資料表類型的中繼資料)。 然後,應用程式會將資料表值參數的TYPE_NAME傳遞為 TableName 參數。
SQL_SS_NAME_SCOPE_EXTENDED 使用疏鬆資料行功能時,不論成員資格為何 column_set ,SQLColumns 都會傳回所有資料行。
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 使用疏鬆資料行功能時,SQLColumns 只會傳回屬於疏鬆 column_set 成員的資料行。
SQL_SS_NAME_SCOPE_DEFAULT 等於 SQL_SS_NAME_SCOPE_TABLE。

SS_TYPE_CATALOG_NAME和SS_TYPE_SCHEMA_NAME分別與 CatalogNameSchemaName 參數搭配使用,以識別資料表值參數的目錄和架構。 當應用程式完成擷取資料表值參數的中繼資料時,必須將 SQL_SOPT_SS_NAME_SCOPE 社回 SQL_SS_NAME_SCOPE_TABLE 的預設值。

當 SQL_SOPT_SS_NAME_SCOPE 設定為 SQL_SS_NAME_SCOPE_TABLE 時,連結伺服器的查詢會失敗。 使用包含伺服器元件的目錄呼叫 SQLColumns 或 SQLPrimaryKeys 將會失敗。

如果嘗試將 SQL_SOPT_SS_NAME_SCOPE 設定為無效值,會傳回 SQL_ERROR,並產生包含 SQLSTATE HY024 與「屬性值無效」訊息的診斷記錄。

如果其他目錄函式則呼叫 SQLTables、SQLColumns 或 SQLPrimaryKeys 時,SQL_SOPT_SS_NAME_SCOPE具有SQL_SS_NAME_SCOPE_TABLE以外的值,則會傳回SQL_ERROR。 此時會產生包含 SQLSTATE HY010 與「函數順序錯誤 (SQL_SOPT_SS_NAME_SCOPE 未設定為 SQL_SS_NAME_SCOPE_TABLE)」訊息的診斷記錄。

另請參閱

SQLGetStmtAttr 函數
ODBC API 實作詳細資料