SQLColumns

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

SQLColumns 會傳回SQL_SUCCESS CatalogName、TableNameColumnName 參數的值是否存在當這些參數中使用無效值時,SQLFetch 會傳回SQL_NO_DATA。

注意

對於大型實值型別,所有長度參數都會以 SQL_SS_LENGTH_UNLIMITED 的值傳回。

SQLColumns 可以在靜態伺服器數據指標上執行。 嘗試在可更新的 (動態或索引鍵集) 資料指標上執行 SQLColumns ,將會傳回SQL_SUCCESS_WITH_INFO指出數據指標類型已變更。

SQL Server Native Client ODBC 驅動程式支援報告連結伺服器上數據表的資訊,方法是接受 CatalogName 參數的兩部分名稱Linked_Server_Name.Catalog_Name

針對 ODBC 2。X 應用程式不使用 TableName 中的通配符,SQLColumns 會傳回任何名稱符合 TableName 且由目前使用者擁有之數據表的相關信息。 如果目前使用者沒有名稱符合 TableName 參數的數據表,SQLColumns 會傳回數據表名稱符合 TableName 參數之其他用戶擁有之任何數據表的相關信息。 針對 ODBC 2。使用通配符的 x 應用程式, SQLColumns 會傳回名稱符合 TableName 的所有資料表。 針對 ODBC 3。x 應用程式 SQLColumns 會傳回名稱符合 TableName 的所有資料表,不論擁有者或是否使用通配符。

下表列出結果集所傳回的數據列:

資料行名稱 描述
DATA_TYPE 傳回 varchar(max) 資料類型的SQL_VARCHAR、SQL_VARBINARY或SQL_WVARCHAR
TYPE_NAME 針對 varchar(max)、varbinary(max)和 nvarchar(max) 數據類型,傳回 “varchar”、“varbinary”、“varbinary”或 “nvarchar”。
COLUMN_SIZE 針對 varchar(max) 資料類型傳回SQL_SS_LENGTH_UNLIMITED,指出數據行的大小不受限制。
BUFFER_LENGTH 針對 varchar(max) 資料類型傳回SQL_SS_LENGTH_UNLIMITED,指出緩衝區的大小不受限制。
SQL_DATA_TYPE 傳回 varchar(max) 資料類型的SQL_VARCHAR、SQL_VARBINARY或SQL_WVARCHAR
CHAR_OCTET_LENGTH 傳回 char 或 binary 數據行的最大長度。 傳回 0,表示大小不受限制。
SS_XML_SCHEMACOLLECTION_CATALOG_NAME 傳回定義 XML 架構集合名稱之目錄的名稱。 如果找不到目錄名稱,則此變數會包含空字串。
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME 傳回定義 XML 架構集合名稱之架構的名稱。 如果找不到架構名稱,則此變數會包含空字串。
SS_XML_SCHEMACOLLECTION_NAME 傳回 XML 架構集合的名稱。 如果找不到名稱,則此變數會包含空字串。
SS_UDT_CATALOG_NAME 包含UDT之目錄的名稱(使用者定義型別)。
SS_UDT_SCHEMA_NAME 包含UDT的架構名稱。
SS_UDT_ASSEMBLY_TYPE_NAME UDT 的元件限定名稱。

針對UDT,會使用現有的TYPE_NAME數據行來指出UDT的名稱;因此,不應將它的其他數據行新增至 SQLColumns 或 SQLProcedureColumns 的結果集。 UDT 資料行或參數的DATA_TYPE SQL_SS_UDT。

針對參數的 UDT,您可以使用上面定義的新驅動程式特定描述元來取得或設定 UDT 的額外元數據屬性,如果伺服器會傳回或要求這項資訊。

當用戶端連線到 SQL Server 並呼叫 SQLColumns 時,使用 NULL 或目錄輸入參數的通配符值將不會從其他目錄傳回資訊。 相反地,只會傳回目前目錄的相關信息。 用戶端可以先呼叫 SQLTable 來判斷所需數據表所在的目錄。 然後,用戶端可以在呼叫 SQLColumns 時使用該目錄輸入參數的目錄值來擷取該數據表中數據行的相關信息。

SQLColumns 和數據表值參數

SQLColumns 傳回的結果集取決於SQL_SOPT_SS_NAME_SCOPE的設定。 如需詳細資訊,請參閱 SQLSetStmtAttr。 資料表值參數已新增下列資料列:

資料行名稱 資料類型 目錄
SS_IS_COMPUTED Smallint 對於TABLE_TYPE中的數據行,如果數據行是計算數據行,則會SQL_TRUE;否則,SQL_FALSE。
SS_IS_IDENTITY Smallint 如果數據行是標識列,SQL_TRUE;否則,SQL_FALSE。

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

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

如需日期/時間類型傳回之值的相關信息,請參閱 目錄元數據

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

大型 CLR UDT 的 SQLColumns 支援

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

疏鬆數據行的 SQLColumns 支援

已將兩個 SQL Server 特定數據行新增至 SQLColumns 的結果集:

資料行名稱 資料類型 描述
SS_IS_SPARSE Smallint 如果數據行是疏鬆數據行,則會SQL_TRUE;否則,SQL_FALSE。
SS_IS_COLUMN_SET Smallint 如果數據行是 column_set 數據行,則會SQL_TRUE,否則為SQL_FALSE。

與 ODBC 規格一致,SS_IS_SPARSE和SS_IS_COLUMN_SET會出現在 SQL Server 2008 (10.0.x) 之前新增至 SQL Server 2008 (10.0.x) 之前的所有驅動程式特定數據行,以及 ODBC 本身所授權的所有數據行之後。

SQLColumns 傳回的結果集取決於SQL_SOPT_SS_NAME_SCOPE的設定。 如需詳細資訊,請參閱 SQLSetStmtAttr

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

另請參閱

SQLColumns 函式
ODBC API 實作詳細數據