SQLColumns
不論 CatalogName、TableName 或 ColumnName 參數的值是否存在,SQLColumns 都會傳回 SQL_SUCCESS。在這些參數中使用無效值時,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。
針對在 TableName 中不使用萬用字元的 ODBC 2.x 應用程式,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” 或 “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 或萬用字元值用於目錄輸入參數將不會從其他目錄傳回資訊。系統只會傳回目前目錄的相關資訊。用戶端可以先呼叫 SQLTables 來判斷所需資料表所在的目錄。接著,用戶端可以在 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 支援
系統已經將兩個 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 之 SQL Server 版本中所加入的所有驅動程式專用資料行之前,以及 ODBC 本身所託管的所有資料行之後。
SQLColumns 所傳回的結果集取決於 SQL_SOPT_SS_NAME_SCOPE 的設定。如需詳細資訊,請參閱<SQLSetStmtAttr>。
如需有關 ODBC 中之疏鬆資料行的詳細資訊,請參閱<疏鬆資料行支援 (ODBC)>。