sp_special_columns (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
傳回可唯一識別數據表中數據列的最佳數據行集。 此外,當交易更新數據列中的任何值時,也會傳回自動更新的數據行。
語法
sp_special_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
引數
[ @table_name = ] N'table_name'
用來傳回目錄信息的數據表名稱。 @table_name為 sysname,沒有預設值。 不支援通配符模式比對。
[ @table_owner = ] N'table_owner'
用來傳回目錄信息的數據表擁有者。 @table_owner為 sysname 預設值為 NULL
。 不支援通配符模式比對。 如果未 指定@table_owner ,則會套用基礎資料庫管理系統 (DBMS) 的預設數據表可見性規則。
在 SQL Server 中,如果目前用戶擁有具有指定名稱的數據表,則會傳回該數據表的數據行。 如果未指定@table_owner,且目前用戶沒有指定之@table_name的數據表,則此程式會尋找資料庫擁有者所擁有的指定@table_name數據表。 如果數據表存在,則會傳回其數據行。
[ @table_qualifier = ] N'table_qualifier'
數據表限定符的名稱。 @table_qualifier為 sysname,預設值為 NULL
。 各種 DBMS 產品支援數據表的三部分命名(<qualifier>.<owner>.<name>
)。 在 SQL Server 中,此資料行代表資料庫名稱。 在某些產品中,它代表數據表之資料庫環境的伺服器名稱。
[ @col_type = ] 'col_type'
數據行類型。 @col_type為 char(1),預設值為 R
。
Type
R
會透過從資料行或資料行擷取值,傳回最佳數據行或數據行集,讓指定資料表中的任何數據列能夠唯一識別。 數據行可以是針對此目的所設計的虛擬數據行,或是數據表中任何唯一索引的數據行。Type
V
會傳回指定資料表中的數據行或數據行,如果有的話,當數據列中的任何值由任何交易更新時,數據源會自動更新。
[ @scope = ] 'scope'
ROWID 的最低必要範圍。 @scope為 char(1),預設值為 T
。
- 範圍
C
指定只有在位於該數據列時,ROWID 才有效。 - 範圍
T
指定 ROWID 對交易有效。
[ @nullable = ] 'nullable'
指定特殊數據行是否可以接受 NULL
值。 @nullable為 char(1),預設值為 U
。
O
指定不允許 Null 值的特殊資料行。U
指定部分可為 Null 的數據行。
[ @ODBCVer = ] ODBCVer
所使用的 ODBC 版本。 @ODBCVer為 int,預設值為 2
。 此值表示 ODBC 2.0 版。 如需 ODBC 2.0 版與 ODBC 3.0 版之間差異的詳細資訊,請參閱 ODBC 3.0 版的 ODBC SQLSpecialColumns
規格。
傳回碼值
無。
結果集
資料行名稱 | 資料類型 | 描述 |
---|---|---|
SCOPE |
smallint | 數據列標識碼的實際範圍。 可以是 0 、1 或 2 。 SQL Server 一律會傳 0 回 。 此欄位一律會傳回值。0 = SQL_SCOPE_CURROW 。 數據列標識碼保證只有在位於該數據列時才有效。 如果數據列已由另一筆交易更新或刪除數據列,則稍後使用數據列標識元重新選取可能不會傳回數據列。1 = SQL_SCOPE_TRANSACTION 。 數據列標識元保證在目前交易期間有效。2 = SQL_SCOPE_SESSION 。 數據列標識碼保證在會話期間有效(跨交易界限)。 |
COLUMN_NAME |
sysname | 傳回之@table_name每個數據行的數據行名稱。 此欄位一律會傳回值。 |
DATA_TYPE |
smallint | ODBC SQL 資料類型。 |
TYPE_NAME |
sysname | 數據源相依數據類型名稱;例如 char、varchar、money 或 text。 |
PRECISION |
int | 數據源上數據行的有效位數。 此欄位一律會傳回值。 |
LENGTH |
int | 在數據源的二進位格式中,數據類型所需的長度,以位元組為單位,例如 10 char(10)、4 integer和 2 smallint。 |
SCALE |
smallint | 數據源上的數據行小數位數。 NULL 針對不適用小數字數的數據類型,會傳回 。 |
PSEUDO_COLUMN |
smallint | 指出數據行是否為虛擬數據行。 SQL Server 一律會傳 1 回 :0 = SQL_PC_UNKNOWN 1 = SQL_PC_NOT_PSEUDO 2 = SQL_PC_PSEUDO |
備註
sp_special_columns
相當於 SQLSpecialColumns
ODBC 中的 。 傳回的結果會依 SCOPE
排序。
權限
SELECT
需要架構的許可權。
範例
下列範例會傳回可唯一識別數據表中 HumanResources.Department
數據列之數據行的相關信息。
USE AdventureWorks2022;
GO
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';