Share via


sp_special_columns (Transact-SQL)

傳回一組用來唯一識別資料表中某個資料列的最佳資料行。另外,也傳回交易更新資料列中的任何值時,所自動更新的資料行。

主題連結圖示Transact-SQL 語法慣例

語法

sp_special_columns [@table_name =] 'table_name'   
     [,[@table_owner =] 'table_owner'] 
     [,[@qualifier =] 'qualifier'] 
     [,[@col_type =] 'col_type'] 
     [,[@scope =] 'scope']
     [,[@nullable =] 'nullable'] 
     [,[@ODBCVer =] 'ODBCVer'] ;

引數

  • [ @table_name =] 'table_name'
    這是用來傳回目錄資訊的資料表名稱。name 是 sysname,沒有預設值。不支援萬用字元的模式比對。

  • [@table_owner =] 'table_owner'
    這是用來傳回目錄資訊之資料表的資料表擁有者。owner 是 sysname,預設值是 NULL。不支援萬用字元的模式比對。如果未指定 owner,就會套用基礎 DBMS 的預設資料表可見性規則。

    在 SQL Server 中,如果目前使用者擁有一份含指定名稱的資料表,就會傳回這份資料表的資料行。如果未指定 owner,且目前使用者並未擁有指定 name 的資料表,這個程序就會查看資料庫擁有者所擁有之指定 name 的資料表。如果資料表存在,就會傳回它的資料行。

  • [@qualifier =] 'qualifier'
    這是資料表限定詞的名稱。qualifier 是 sysname,預設值是 NULL。各種 DBMS 產品都支援三部份的資料表命名 (qualifier.owner.name)。在 SQL Server 中,這個資料行代表資料庫名稱。在某些產品中,它代表資料表之資料庫環境的伺服器名稱。

  • [@col_type =] 'col_type'
    這是資料行類型。col_type 是 char(1),預設值是 R。類型 R 會傳回一個或一組最佳資料行,它會從一或多個資料行中擷取值,以便用來唯一識別指定資料表中的任何資料列。資料行可以是專為了這個目的而設計的虛擬資料行,也可以是資料表任何唯一索引的一或多個資料行。類型 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(4),預設值是 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 之各個資料行的資料行名稱。這個欄位一律會傳回值。

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 相當於 ODBC 中的 SQLSpecialColumns。傳回的結果依 SCOPE 來排序。

權限

需要結構描述的 SELECT 權限。

範例

下列範例會傳回用來唯一識別 HumanResources.Department 資料表中的資料列之資料行的相關資訊。

USE AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department' 
    ,@table_owner = 'HumanResources';