sp_columns (Transact-SQL)

適用于: Microsoft Fabric 中 Microsoft Fabric 倉儲中的 SQL Server Azure SQL Database Azure SQL 受控實例 Azure Synapse Analytics Analytics Platform System (PDW) SQL 端點

傳回可在目前環境中查詢之指定物件的資料行資訊。

Transact-SQL 語法慣例

語法

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

引數

[ @table_name = ] object 這是用來傳回目錄資訊的物件名稱。 物件 可以是具有資料表值函式等資料行的資料表、檢視或其他物件。 物件 Nvarchar(384) ,沒有預設值。 支援萬用字元模式比對。

[ @table_owner = ] owner 這是物件的物件擁有者,用來傳回目錄資訊。 owner Nvarchar(384) ,預設值為 Null。 支援萬用字元模式比對。 如果未 指定擁有者 ,則會套用基礎 DBMS 的預設物件可見度規則。

如果目前使用者擁有具有指定名稱的物件,則會傳回該物件的資料行。 如果未 指定擁有者 ,且目前使用者沒有擁有具有指定 物件的物件 sp_columns 會尋找具有資料庫擁有者所擁有之指定 物件的物件 。 如果存在,則會傳回該物件的資料行。

[ @table_qualifier = ] qualifier 這是物件限定詞的名稱。 限定詞 sysname ,預設值為 Null。 各種 DBMS 產品支持對象的三部分命名( 限定詞。 擁有者 name )。 在 SQL Server 中,此資料行代表資料庫名稱。 在某些產品中,它代表物件資料庫環境的伺服器名稱。

[ @column_name = ] column 這是單一資料行,當只想要一個目錄資訊資料行時,就會使用。 column Nvarchar(384), 預設值為 Null。 如果未 指定資料行 ,則會傳回所有資料行。 在 SQL Server 中, 資料 行代表 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 資料行的 傳回值在基底 10 中。
長度 int 傳輸資料的大小。 1
規模 smallint 小數點右邊的數位數。
RADIX smallint 數值資料類型的基底。
smallint 指定可為 Null。

1 = Null 是可能的。

0 = NOT Null。
言論 Varchar(254) 此欄位一律會傳回 Null。
COLUMN_DEF nvarchar(4000) 資料行的預設值。
SQL_DATA_TYPE smallint SQL 資料類型出現在描述子之 TYPE 欄位時的值。 此資料行與 DATA_TYPE 資料行相同,但 datetime 和 SQL-92 interval 資料類型除外 。 這個資料行一律會傳回值。
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 和 VIEW DEFINITION 許可權。

備註

sp_columns遵循分隔識別碼的需求。 如需詳細資訊,請參閱< Database Identifiers>。

範例

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

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

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

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

-- Uses AdventureWorks  
  
EXEC sp_columns @table_name = N'DimEmployee',  
   @table_owner = N'dbo';  

另請參閱

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