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
.
类型
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,默认值为 2
. 此值指示 ODBC 版本 2.0。 有关 ODBC 版本 2.0 和 ODBC 版本 3.0 之间的差异的详细信息,请参阅 SQLSpecialColumns
ODBC 版本 3.0 的 ODBC 规范。
返回代码值
无。
结果集
列名称 | 数据类型 | 描述 |
---|---|---|
SCOPE |
smallint | 行 ID 的实际作用域。 可以是 0 、1 或 2 。 SQL Server 始终返回 0 。 此字段始终返回值。0 = SQL_SCOPE_CURROW . 行 ID 只有位于该行上时才能保证有效。 如果行已由另一个事务更新或删除该行,则以后使用行 ID 重新选择可能不会返回行。1 = SQL_SCOPE_TRANSACTION . 行 ID 在当前事务期间保证有效。2 = SQL_SCOPE_SESSION . 行 ID 在会话(跨事务边界)期间保证有效。 |
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 整数和 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';