共用方式為


sp_columns (Transact-SQL)

更新: 2006 年 7 月 17 日

傳回目前環境中所能查詢之指定資料表或檢視的資料行資訊。

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

語法

sp_columns [ @table_name = ] object  [ , [ @table_owner = ] owner ] 
     [ , [ @table_qualifier = ] qualifier ] 
     [ , [ @column_name = ] column ] 
     [ , [ @ODBCVer = ] ODBCVer ]

引數

  • [ @table_name=] object
    這是用來傳回目錄資訊的資料表或檢視名稱。object_namenvarchar(384),沒有預設值。支援萬用字元的模式比對。
  • [ @table_owner****=**] owner
    這是用來傳回目錄資訊之資料表或檢視的物件擁有者。ownernvarchar(384),預設值是 NULL。支援萬用字元的模式比對。如果未指定 owner,就會套用基礎 DBMS 的預設資料表或檢視可見性規則。

    在 SQL Server 2005 中,如果目前使用者擁有一份含指定名稱的資料表或檢視,就會傳回該資料表的資料行。如果未指定 owner,且目前使用者並未擁有指定 object 的資料表或檢視,sp_columns 就會查看資料庫擁有者所擁有之指定 object 的資料表或檢視。如果資料表存在,就會傳回它的資料行。

  • [ @table_qualifier****=] qualifier
    這是資料表或檢視限定詞的名稱。qualifiersysname,預設值是 NULL。各種 DBMS 產品都支援三部分的資料表命名 (qualifier
    .owner.**name)。在 SQL Server 中,這個資料行代表資料庫名稱。在某些產品中,它代表資料表之資料庫環境的伺服器名稱。
  • [ @column_name=] column
    這是個單一資料行,當只需要一個目錄資訊的資料行時,便使用這個單一資料行。columnnvarchar(384),預設值是 NULL。如果未指定 column,就會傳回所有資料行。在 SQL Server 中,column 代表符合 syscolumns 資料表所列出的資料行名稱。支援萬用字元的模式比對。若要有最大交互操作能力,閘道用戶端應該只採用 SQL-92 標準模式比對 (% 和 _ 萬用字元)。
  • [ @ODBCVer=] ODBCVer
    這是使用中的 ODBC 版本。ODBCVerint,預設值是 2。這表示 ODBC 第 2 版。有效值是 2 或 3。如需有關第 2 版和第 3 版的行為差異,請參閱 ODBC SQLColumns 規格。

傳回碼值

結果集

sp_columns 目錄預存程序相當於 ODBC 中的 SQLColumns。傳回的結果依 TABLE_QUALIFIERTABLE_OWNERTABLE_NAME 來排序。

資料行名稱 資料類型 描述

TABLE_QUALIFIER

sysname

資料表或檢視限定詞名稱。這個欄位可以是 NULL。

TABLE_OWNER

sysname

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

TABLE_NAME

sysname

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

COLUMN_NAME

sysname

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

DATA_TYPE

smallint

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

TYPE_NAME

sysname

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

PRECISION

int

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

LENGTH

int

資料的傳送大小。1

SCALE

smallint

小數點右側的位數。

RADIX

smallint

數值資料類型的基底。

NULLABLE

smallint

指定 Null 屬性。

1 = 可能是 NULL。

0 = NOT NULL。

REMARKS

varchar(254)

這個欄位一律會傳回 NULL。

COLUMN_DEF

nvarchar(4000)

資料行的預設值。

SQL Server 2005 在目錄中繼資料內解碼及儲存 SQL 運算式的方式異於 SQL Server 2000。已解碼運算式的語意相當於原始文字,但是不能保證語法相同。例如,空白字元會從已解碼的運算式移除。如需詳細資訊,請參閱<SQL Server 2005 中對於 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 資料類型。如需詳細資訊,請參閱<資料類型 (Transact-SQL)>。

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

權限

需要結構描述的 SELECT 權限。

範例

下列範例會傳回指定資料表的資料行資訊。

USE AdventureWorks
GO
EXEC sp_columns @table_name = N'Department',
   @table_owner = N'HumanResources';

請參閱

參考

sp_tables (Transact-SQL)
目錄預存程序 (Transact-SQL)
系統預存程序 (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

新增內容:
  • COLUMN_DEF 資料行中,加入有關如何將 SQL 運算式儲存在 SQL Server 2005 中的內容。