sp_columns_ex (Transact-SQL)

傳回指定連結伺服器資料表的資料行資訊,每個資料行一個資料列。如果指定了 columnsp_columns_ex 只會傳回特定資料行的資料行資訊。

主題連結圖示Transact-SQL 語法慣例

語法

sp_columns_ex [ @table_server = ] 'table_server' 
     [ , [ @table_name = ] 'table_name' ] 
     [ , [ @table_schema = ] 'table_schema' ] 
     [ , [ @table_catalog = ] 'table_catalog' ] 
     [ , [ @column_name = ] 'column' ] 
     [ , [ @ODBCVer = ] 'ODBCVer' ]

引數

  • [ @table_server = ] 'table_server'
    這是傳回的資料行資訊所屬的連結伺服器名稱。table_server 是 sysname,沒有預設值。

  • [ @table_name = ] 'table_name'
    這是傳回的資料行資訊所屬之資料表的結構描述名稱。table_name 是 sysname,預設值是 NULL。

  • [ @table_schema = ] 'table_schema'
    這是傳回的資料行資訊所屬之資料表的結構描述名稱。table_schema 是 sysname,預設值是 NULL。

  • [ @table_catalog = ] 'table_catalog'
    這是傳回的資料行資訊所屬之資料表的結構描述名稱。table_catalog 是 sysname,預設值是 NULL。

  • [ @column_name = ] 'column'
    這是提供的資訊所屬的資料庫資料行名稱。column 是 sysname,預設值是 NULL。

  • [ @ODBCVer = ] 'ODBCVer'
    這是所用的 ODBC 版本。ODBCVer 是 int,預設值是 2。這表示 ODBC 第 2 版。有效值是 2 或 3。如需有關第 2 版和第 3 版的行為差異,請參閱 ODBC SQLColumns 規格。

傳回碼值

結果集

資料行名稱

資料類型

描述

TABLE_CAT

sysname

資料表或檢視限定詞名稱。各種 DBMS 產品都支援三部分的資料表命名 (qualifier.owner.name)。在 SQL Server 2008 和 SQL Server 2005 中,這個資料行代表資料庫名稱。在某些產品中,它代表資料表之資料庫環境的伺服器名稱。這個欄位可以是 NULL。

TABLE_SCHEM

sysname

資料表或檢視擁有者名稱。在 SQL Server 中,這個資料行代表建立資料表的資料庫使用者名稱。這個欄位一律會傳回值。

TABLE_NAME

sysname

資料表或檢視表名稱。這個欄位一律會傳回值。

COLUMN_NAME

sysname

傳回的 TABLE_NAME 之各個資料行的資料行名稱。這個欄位一律會傳回值。

DATA_TYPE

smallint

對應於 ODBC 類型指標的整數值。如果這是無法對應於 ODBC 類型的資料類型,這個值就是 NULL。TYPE_NAME 資料行會傳回原生資料類型名稱。

TYPE_NAME

varchar(13)

代表資料類型的字串。基礎 DBMS 提供這個資料類型名稱。

COLUMN_SIZE

int

有效位數的數目。PRECISION 資料行的傳回值為十進數。

BUFFER_LENGTH

int

資料的傳送大小。1

DECIMAL_DIGITS

smallint

小數點右側的位數。

NUM_PREC_RADIX

smallint

這是數值資料類型的基礎。

NULLABLE

smallint

指定 Null 屬性。

1 = 可能是 NULL。

0 = NOT NULL。

REMARKS

varchar(254)

這個欄位一律會傳回 NULL。

COLUMN_DEF

varchar(254)

資料行的預設值。

SQL Server 2008 和 SQL Server 2005 與 SQL Server 2000 相異處在於前兩者在目錄中繼資料內解碼及儲存 SQL 運算式的方式。已解碼運算式的語意相當於原始文字,但是不能保證語法相同。例如,空白字元會從已解碼的運算式移除。如需詳細資訊,請參閱<SQL Server 2008 中對於 Database Engine 功能的行為變更>。

SQL_DATA_TYPE

smallint

SQL 資料類型出現在描述子之 TYPE 欄位時的值。除了 datetime 和 SQL-92 interval 資料類型,這個資料行與 DATA_TYPE 資料行相同。這個資料行一律會傳回值。

SQL_DATETIME_SUB

smallint

datetime 和 SQL-92 interval 資料類型的子類型代碼。其他資料類型的這個資料行都會傳回 NULL。

CHAR_OCTET_LENGTH

int

字元或整數資料類型資料行的最大長度 (以位元組為單位)。所有其他資料類型的這個資料行都會傳回 NULL。

ORDINAL_POSITION

int

資料行在資料表中的序數位置。資料表中的第一個資料行是 1。這個資料行一律會傳回值。

IS_NULLABLE

varchar(254)

資料表中資料行的 Null 屬性。遵照 ISO 規則來決定 Null 屬性。ISO SQL 標準 DBMS 無法傳回空字串。

YES = 資料行可以包括 NULLS。

NO = 資料行不能包括 NULLS。

如果 Null 屬性不明,這個資料行會傳回長度為零的字串。

這個資料行的傳回值不同於 NULLABLE 資料行的傳回值。

SS_DATA_TYPE

tinyint

擴充預存程序所用的 SQL Server 資料類型。如需詳細資訊,請參閱<資料類型 (Database Engine)>。

如需詳細資訊,請參閱 Microsoft ODBC 文件集。

備註

sp_columns_ex 的執行方式是查詢對應於 table_server 的 OLE DB 提供者之 IDBSchemaRowset 介面的 COLUMNS 資料列集。table_name、table_schema、table_catalog 及 column 參數會傳遞給這個介面來限制傳回的資料列。

如果指定連結伺服器的 OLE DB 提供者不支援 IDBSchemaRowset 介面的 COLUMNS 資料列集,sp_columns_ex 會傳回空的結果集。

sp_columns_ex 依循分隔識別碼的需求。如需詳細資訊,請參閱<分隔識別碼 (Database Engine)>。

權限

需要結構描述的 SELECT 權限。

範例

下列範例會傳回 Seattle1 連結伺服器 AdventureWorks 資料庫中之 HumanResources.Employee 資料表 Title 資料行的資料類型。

EXEC sp_columns_ex 'Seattle1', 
   'Employee', 
   'HumanResources', 
   'AdventureWorks', 
   'Title';