sp_special_columns (Transact-SQL)
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
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 指定可部分为空的列。[ @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 |
取决于数据源的数据类型名称,例如 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 AdventureWorks2012;
GO
EXEC sp_special_columns @table_name = 'Department'
,@table_owner = 'HumanResources';