SQLColAttribute

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

您可以使用 SQLColAttribute 來擷取 已備妥或已執行 ODBC 語句之結果集數據行的屬性。 在備妥的語句上呼叫 SQLColAttribute 會導致往返 SQL Server。 SQL Server Native Client ODBC 驅動程式會在語句執行期間接收結果集數據行數據,因此在 SQLExecuteSQLExecDirect 完成之後呼叫 SQLColAttribute 並不牽涉到伺服器往返。

注意

所有 SQL Server 結果集上都無法使用 ODBC 資料行標識碼屬性。

欄位識別碼 描述
SQL_COLUMN_TABLE_NAME 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。
SQL_DESC_BASE_COLUMN_NAME 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。
SQL_DESC_BASE_TABLE_NAME 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。
SQL_DESC_CATALOG_NAME 資料庫名稱。 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。
SQL_DESC_LABEL 適用於所有結果集。 值與SQL_DESC_NAME欄位的值相同。

只有當數據行是表達式的結果,而且表達式不包含標籤指派時,字段才會是零長度。
SQL_DESC_NAME 適用於所有結果集。 值與SQL_DESC_LABEL欄位的值相同。

只有當數據行是表達式的結果,而且表達式不包含標籤指派時,字段才會是零長度。
SQL_DESC_SCHEMA_NAME 擁有者名稱。 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。

只有在 SELECT 語句中指定資料行的擁有者名稱時,才能使用。
SQL_DESC_TABLE_NAME 可從產生伺服器數據指標或包含 FOR BROWSE 子句的執行 SELECT 語句上擷取的結果集使用。
SQL_DESC_UNNAMED 除非數據行是表達式中不包含標籤指派的表達式結果,否則SQL_NAMED結果集中的所有數據行。 當SQL_DESC_UNNAMED傳回SQL_UNNAMED時,所有 ODBC 資料行標識碼屬性都會包含數據行的長度為零的字串。

SQL Server Native Client ODBC 驅動程式會使用 SET FMTONLY 語句,在呼叫 SQLColAttribute 以備妥但未執行語句時減少伺服器額外負荷。

針對大型實值類型, SQLColAttribute 會傳回下列值:

欄位識別碼 變更的描述
SQL_DESC_DISPLAY_SIZE 這是顯示數據行數據所需的字元數上限。 對於大型實值類型數據行,傳回的值會SQL_SS_LENGTH_UNLIMITED。
SQL_DESC_LENGTH 傳回結果集中數據行的實際長度。 對於大型實值類型數據行,傳回的值會SQL_SS_LENGTH_UNLIMITED。
SQL_DESC_OCTET_LENGTH 傳回大型實值型別數據行的最大長度。 SQL_SS_LENGTH_UNLIMITED用來表示無限制的大小。
SQL_DESC_PRECISION 傳回大型實值型別數據行的值SQL_SS_LENGTH_UNLIMITED。
SQL_DESC_TYPE 傳回大型實值類型的SQL_VARCHAR、SQL_WVARCHAR和SQL_VARBINARY。
SQL_DESC_TYPE_NAME 傳回大型實值類型的 「varchar」、“varbinary”、“nvarchar”。

針對所有版本,當已備妥的 SQL 語句批次產生多個結果集時,只會針對第一個結果集報告數據行屬性。

下列數據行屬性是由 SQL Server Native Client ODBC 驅動程式公開的延伸模組。 SQL Server Native Client ODBC 驅動程式會傳回 NumericAttrPtr 參數中的所有值。 這些值會以 SDWORD (帶正負號的 long) 傳回,但SQL_CA_SS_COMPUTE_BYLIST,這是 WORD 陣列的指標。

欄位識別碼 傳回的值
SQL_CA_SS_COLUMN_HIDDEN* 如果參考的數據行是建立以支援包含 FOR BROWSE 之 Transact-SQL SELECT 語句之隱藏主鍵的一部分,則為 TRUE。
SQL_CA_SS_COLUMN_ID 目前 Transact-SQL SELECT 語句中 COMPUTE 子句結果數據行的序數位置。
SQL_CA_SS_COLUMN_KEY* 如果參考的數據行是數據列主鍵的一部分,且 Transact-SQL SELECT 語句包含 FOR BROWSE,則為 TRUE。
SQL_CA_SS_COLUMN_OP 指定計算子句數據行中值負責匯總運算子的整數。 整數值的定義位於 sqlncli.h 中。
SQL_CA_SS_COLUMN_ORDER 數據行在 ODBC 或 Transact-SQL SELECT 語句的 ORDER BY 子句中的序數位置。
SQL_CA_SS_COLUMN_SIZE 將數據行擷取的數據值系結至SQL_C_BINARY變數所需的最大長度,以位元組為單位。
SQL_CA_SS_COLUMN_SSTYPE 儲存在 SQL Server 資料行中的原生數據類型。 類型值的定義位於 sqlncli.h 中。
SQL_CA_SS_COLUMN_UTYPE SQL Server 資料行使用者定義資料類型的基底數據類型。 類型值的定義位於 sqlncli.h 中。
SQL_CA_SS_COLUMN_VARYLEN 如果數據行的數據長度可能不同,則為TRUE,否則為 FALSE。
SQL_CA_SS_COMPUTE_BYLIST 指定 COMPUTE 子句 BY 片語中使用的數據行之 WORD 陣列的指標(不帶正負號的 short)。 如果 COMPUTE 子句未指定 BY 片語,則會傳回 NULL 指標。

陣列的第一個專案包含 BY 清單資料行的計數。 其他元素是數據行序數。
SQL_CA_SS_COMPUTE_ID 計算數據列的 computeid ,這是目前 Transact-SQL SELECT 語句中 COMPUTE 子句的結果。
SQL_CA_SS_NUM_COMPUTES 目前 Transact-SQL SELECT 語句中指定的 COMPUTE 子句數目。
SQL_CA_SS_NUM_ORDERS ODBC 或 Transact-SQL SELECT 語句的 ORDER BY 子句中指定的數據行數目。

* 如果語句屬性SQL_SOPT_SS_HIDDEN_COLUMNS設定為 SQL_HC_ON,則可用。

SQL Server 2005 (9.x) 引進驅動程式特定的描述元欄位,以提供其他資訊來表示 XML 架構集合名稱、架構名稱和目錄名稱。 如果這些屬性包含非英數位元,則不需要引號或逸出字元。 下表列出這些新的描述元欄位:

資料行名稱 類型 描述
SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME CharacterAttributePtr 定義 XML 結構描述集合名稱所在目錄的名稱。 如果找不到目錄名稱,則此變數會包含空字串。

這項資訊會從 IRD 的 SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME 記錄欄位傳回,這是讀寫欄位。
SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E CharacterAttributePtr 定義 XML 結構描述集合名稱所在結構描述的名稱。 如果找不到架構名稱,則此變數會包含空字串。

此資訊會從 IRD 的 SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME 記錄欄位傳回,這是讀寫欄位。
SQL_CA_SS_XML_SCHEMACOLLECTION_NAME CharacterAttributePtr XML 結構描述集合的名稱。 如果找不到名稱,則此變數會包含空字串。

此資訊會從 IRD 的 SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME 記錄欄位傳回,這是讀寫欄位。

此外,SQL Server 2005 (9.x) 引進了新的驅動程式特定描述元欄位,為結果集的使用者定義型別 (UDT) 數據行或預存程式或參數化查詢的 UDT 參數提供其他資訊。 如果這些屬性包含非英數位元,則不需要引號或逸出字元。 下表列出這些新的描述元欄位:

資料行名稱 類型 描述
SQL_CA_SS_UDT_CATALOG_NAME CharacterAttributePtr 包含UDT之目錄的名稱。
SQL_CA_SS_UDT_SCHEMA_NAME CharacterAttributePtr 包含UDT的架構名稱。
SQL_CA_SS_UDT_TYPE_NAME CharacterAttributePtr UDT 的名稱。
SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME CharacterAttributePtr UDT 的元件限定名稱。

現有的描述元欄位識別碼SQL_DESC_TYPE_NAME用來指出 UDT 的名稱。 UDT 類型數據行的SQL_DESC_TYPE欄位SQL_SS_UDT。

增強日期和時間功能的 SQLColAttribute 支援

如需針對日期/時間類型傳回的值,請參閱參數和結果元數據中的一節。

如需詳細資訊,請參閱 日期和時間改善 (ODBC)

大型 CLR UDT 的 SQLColAttribute 支援

SQLColAttribute 支援大型 CLR 使用者定義型別 (UDT)。 如需詳細資訊,請參閱 大型CLR使用者定義型別 (ODBC)

疏鬆數據行的 SQLColAttribute 支援

SQLColAttribute 會查詢新的實作數據列描述元 (IRD) 欄位,SQL_CA_SS_IS_COLUMN_SET,以判斷數據行是否為 column_set 數據行。

如需詳細資訊,請參閱 疏鬆資料行支援 (ODBC)

另請參閱

SQLColAttribute 函式
ODBC API 實作詳細數據
SQLSetStmtAttr