sp_special_columns (Transact-SQL)

更新日期: 2006 年 4 月 14 日

返回一组唯一标识表中某个行的最优列。如果事务更新了行中的某个值,则还将返回自动更新的列。

主题链接图标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'
    指示特殊列能否接受空值。nullable 的数据类型为 char(1),默认值为 U。如果值为 O,则指定特殊列不允许接受空值。如果值为 U,则指定列可以部分为空值。
  • [ @ODBCVer =] 'ODBCVer'
    当前使用的 ODBC 版本。ODBCVer 的数据类型为 int(4),默认值为 2,指示 ODBC 2.0 版。有关 ODBC 2.0 版和 ODBC 3.0 版之间的差别的详细信息,请参阅 ODBC 3.0 版的 ODBC SQLSpecialColumns 规范。

返回代码值

结果集

列名 数据类型 说明

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中每列的列名。该字段始终返回值。

DATA_TYPE

smallint

ODBC SQL 数据类型。

TYPE_NAME

sysname

取决于数据源的数据类型名称,例如 charvarcharmoneytext

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'

请参阅

参考

目录存储过程 (Transact-SQL)
系统存储过程 (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

已更改的内容:
  • 更正了 PSEUDO_COLUMN 值。