SQLColAttribute
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)
您可以使用 SQLColAttribute 來擷取 已備妥或已執行 ODBC 語句之結果集數據行的屬性。 在備妥的語句上呼叫 SQLColAttribute 會導致往返 SQL Server。 SQL Server Native Client ODBC 驅動程式會在語句執行期間接收結果集數據行數據,因此在 SQLExecute 或 SQLExecDirect 完成之後呼叫 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) 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應