sp_columns (Transact-SQL)
傳回目前環境中所能查詢之指定物件的資料行資訊。
語法
sp_columns [ @table_name = ] object [ , [ @table_owner = ] owner ]
[ , [ @table_qualifier = ] qualifier ]
[ , [ @column_name = ] column ]
[ , [ @ODBCVer = ] ODBCVer ]
引數
[ @table_name=] object
這是用來傳回目錄資訊之物件的名稱。 object 可以是資料表、檢視表或其他具有資料行的物件 (例如資料表值函式)。 object 是 nvarchar(384),沒有預設值。 支援萬用字元的模式比對。[ @table_owner=] owner
這是用來傳回目錄資訊之物件的物件擁有者。 owner 是 nvarchar(384),預設值是 NULL。 支援萬用字元的模式比對。 如果沒有指定 owner,就會套用基礎 DBMS 的預設物件可見性規則。如果目前使用者擁有一個含有指定名稱的物件,就會傳回該物件的資料行。 如果沒有指定 owner,而且目前使用者並未擁有含有指定之 object 的物件,sp_columns 就會尋找資料庫擁有者所擁有且含有指定之 object 的物件。 如果存在,就會傳回該物件的資料行。
[ @table_qualifier=] qualifier
這是物件限定詞的名稱。 qualifier 是 sysname,預設值是 NULL。 各種 DBMS 產品都支援三部分的物件命名 (qualifier**.owner.**name)。 在 SQL Server 中,這個資料行代表資料庫名稱。 在某些產品中,它代表物件之資料庫環境的伺服器名稱。[ @column_name=] column
這是個單一資料行,當只需要一個目錄資訊的資料行時,就會使用這個單一資料行。 column 是 nvarchar(384),預設值是 NULL。 如果未指定 column,就會傳回所有資料行。 在 SQL Server 中,column 代表符合 syscolumns 資料表所列出的資料行名稱。 支援萬用字元的模式比對。 若要有最大交互操作能力,閘道用戶端應該只採用 SQL-92 標準模式比對 (% 和 _ 萬用字元)。[ @ODBCVer=] ODBCVer
這是要使用之 ODBC 的版本。 ODBCVer 是 int,預設值是 2。 這表示 ODBC 2。 有效值是 2 或 3。 如需 2 和 3 版之間的行為差異,請參閱 ODBC SQLColumns 規格。
傳回碼值
無
結果集
sp_columns 目錄預存程序相當於 ODBC 中的 SQLColumns。 傳回的結果依 TABLE_QUALIFIER、TABLE_OWNER 和 TABLE_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 = 非 NULL。 |
REMARKS |
varchar(254) |
這個欄位一律會傳回 NULL。 |
COLUMN_DEF |
nvarchar(4000) |
資料行的預設值。 |
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 權限。
備註
sp_columns 遵循分隔識別碼的需求。 如需詳細資訊,請參閱<資料庫識別碼>。
範例
下列範例會傳回指定之資料表的資料行資訊。
USE AdventureWorks2012;
GO
EXEC sp_columns @table_name = N'Department',
@table_owner = N'HumanResources';