sp_columns (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
傳回可在目前環境中查詢之指定對象的數據行資訊。
語法
sp_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @column_name = ] N'column_name' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
引數
[ @table_name = ] N'table_name'
@table_name為 nvarchar(384),沒有預設值。
用來傳回目錄資訊的物件名稱。 @table_name可以是數據表、檢視或其他物件,例如數據表值函式。 @table_name為 nvarchar(384),沒有預設值。 支援通配符模式比對。
[ @table_owner = ] N'table_owner'
對象的物件擁有者,用來傳回目錄資訊。 @table_owner為 nvarchar(384),預設值為 NULL
。 支援通配符模式比對。 如果未 指定@table_owner ,則會套用基礎 DBMS 的預設物件可見性規則。
如果目前用戶擁有具有指定名稱的物件,則會傳回該對象的數據行。 如果未指定@table_owner,且目前使用者未擁有具有指定@table_name的物件,sp_columns
則尋找具有資料庫擁有者所擁有之指定@table_name的物件。 如果存在,則會傳回該對象的數據行。
[ @table_qualifier = ] N'table_qualifier'
@table_qualifier為 sysname,預設值為 NULL
。
物件限定符的名稱。 @table_qualifier為 sysname,預設值為 NULL
。 各種 DBMS 產品支援物件<qualifier>.<owner>.<name>
() 的三部分命名。 在 SQL Server 中,此資料行代表資料庫名稱。 在某些產品中,它代表對象資料庫環境的伺服器名稱。
[ @column_name = ] N'column_name'
單一資料行,當只想要一個目錄資訊資料行時,就會使用 。 @column_name為 nvarchar(384),預設值為 NULL
。 如果未 指定@column_name ,則會傳回所有數據行。 在 SQL Server 中, @column_name 代表數據表中 syscolumns
所列的數據行名稱。 支援通配符模式比對。 為了達到最大互操作性,閘道客戶端應該只假設 SQL-92 標準模式比對 ( %
和 _
通配符)。
[ @ODBCVer = ] ODBCVer
正在使用的 ODBC 版本。 @ODBCVer為 int,預設值為 2
。 這表示 ODBC 第 2 版。 有效值為 2
或 3
。 如需版本 2 和 3 之間的行為差異,請參閱 ODBC SQLColumns
規格。
傳回碼值
無。
結果集
目錄 sp_columns
預存程式相當於 SQLColumns
ODBC 中的 。 傳回的結果會依 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 中。 |
LENGTH |
int | 資料的傳送大小。 1 |
SCALE |
smallint | 小數點右邊的數位數。 |
RADIX |
smallint | 數值數據類型的基底。 |
NULLABLE |
smallint | 指定可為 Null。1 = NULL 是可能的。0 = NOT NULL 。 |
REMARKS |
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 = 資料列可以包含 NULL 。NO = 資料列不能包含 NULL 。如果 Null 屬性未知,此資料行會傳回長度為零的字串。 針對此數據行傳回的值與針對 NULLABLE 數據行傳回的值不同。 |
SS_DATA_TYPE |
tinyint | 擴充預存程式所使用的 SQL Server 數據類型。 如需更多資訊,請見 資料類型。 |
1 如需詳細資訊,請參閱 ODBC 概觀。
權限
SELECT
架構上需要和 VIEW DEFINITION
許可權。
備註
sp_columns
遵循分隔標識碼的需求。 如需詳細資訊,請參閱 資料庫標識符。
範例
本文 Transact-SQL 程式碼範例使用 AdventureWorks2022
或 AdventureWorksDW2022
範例資料庫,從 Microsoft SQL Server Samples 和 Community Projects (Microsoft SQL Server 範例和社群專案)首頁即可下載。
下列範例會傳回指定數據表的數據行資訊。
USE AdventureWorks2022;
GO
EXEC sp_columns
@table_name = N'Department',
@table_owner = N'HumanResources';
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
下列範例會傳回指定數據表的數據行資訊。
USE AdventureWorksDW2022;
GO
EXEC sp_columns
@table_name = N'DimEmployee',
@table_owner = N'dbo';