sp_columns (Transact-SQL)
適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure SynapseAnalytics Analytics Platform System (PDW)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)
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: