sp_columns (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库
返回在当前环境中可查询的指定对象的列信息。
语法
sp_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @column_name = ] N'column_name' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
参数
[ @table_name = ] N'table_name'
@table_name 为 nvarchar(384),没有默认值。
用于返回目录信息的对象的名称。 @table_name可以是表、视图或其他作为表值函数等列的对象。 @table_name 为 nvarchar(384),没有默认值。 支持通配符模式匹配。
[ @table_owner = ] N'table_owner'
用于返回目录信息的对象的对象所有者。 @table_owner为 nvarchar(384),默认值为 NULL
. 支持通配符模式匹配。 如果未 指定@table_owner ,则应用基础 DBMS 的默认对象可见性规则。
如果当前用户拥有一个具有指定名称的对象,则返回该对象的列。 如果未 指定@table_owner ,并且当前用户不拥有具有指定 @table_name的对象, sp_columns
则查找具有数据库所有者拥有的指定 @table_name 的对象。 如果存在这样的对象,则返回该对象的列。
[ @table_qualifier = ] N'table_qualifier'
@table_qualifier为 sysname,默认值为 NULL
.
对象限定符的名称。 @table_qualifier为 sysname,默认值为 NULL
. 各种 DBMS 产品支持对象的三部分命名(<qualifier>.<owner>.<name>
)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,它表示对象数据库环境的服务器名称。
[ @column_name = ] N'column_name'
一列,仅在需要一列目录信息时使用。 @column_name为 nvarchar(384),默认值为 NULL
. 如果未 指定@column_name ,则返回所有列。 在 SQL Server 中, @column_name 表示表中列出的 syscolumns
列名。 支持通配符模式匹配。 为了获得最大的互操作性,网关客户端应仅假定 SQL-92 标准模式匹配( %
通配符和 _
通配符)。
[ @ODBCVer = ] ODBCVer
正在使用的 ODBC 版本。 @ODBCVer为 int,默认值为 2
. 这指示 ODBC 版本 2。 有效值为 2
or 3
进行求值的基于 SQL 语言的筛选器表达式。 有关版本 2 和 3 之间的行为差异,请参阅 ODBC SQLColumns
规范。
返回代码值
无。
结果集
目录 sp_columns
存储过程等效于 SQLColumns
ODBC。 返回的结果按 TABLE_QUALIFIER
, TABLE_OWNER
以及 TABLE_NAME
。
列名称 | 数据类型 | 描述 |
---|---|---|
TABLE_QUALIFIER |
sysname | 对象限定符名称。 此字段可以是 NULL . |
TABLE_OWNER |
sysname | 对象所有者名称。 此字段始终返回值。 |
TABLE_NAME |
sysname | 对象名称。 此字段始终返回值。 |
COLUMN_NAME |
sysname | 列名称,针对返回的每个 TABLE_NAME 列。 此字段始终返回值。 |
DATA_TYPE |
smallint | ODBC 数据类型的整数代码。 如果此数据类型无法映射到 ODBC 类型,则为 NULL . 本机数据类型名称在 TYPE_NAME 列中返回。 |
TYPE_NAME |
sysname | 表示数据类型的字符串。 基础 DBMS 提供此数据类型的名称。 |
PRECISION |
int | 有效数字位数。 该列的 PRECISION 返回值在 base 10 中。 |
LENGTH |
int | 数据的传输大小。 1 |
SCALE |
smallint | 小数点右边的数字位数。 |
RADIX |
smallint | 数值数据类型的基数。 |
NULLABLE |
smallint | 指定为 Null 性。1 = NULL 是可能的。0 = NOT NULL 。 |
REMARKS |
varchar(254) | 此字段始终返回 NULL 。 |
COLUMN_DEF |
nvarchar(4000) | 列的默认值。 |
SQL_DATA_TYPE |
smallint | SQL 数据类型在描述符的 TYPE 字段中显示的值。 此列与 DATA_TYPE 列相同,但 日期/时间 和 SQL-92 间隔 数据类型除外。 该列始终返回值。 |
SQL_DATETIME_SUB |
smallint | datetime 及 SQL-92 interval 数据类型的子类型代码。 对于其他数据类型,此列返回 NULL 。 |
CHAR_OCTET_LENGTH |
int | 字符或整数数据类型的列的最大长度(字节)。 对于所有其他数据类型,此列返回 NULL 。 |
ORDINAL_POSITION |
int | 列在对象中的序号位置。 对象中的第一列为 1。 该列始终返回值。 |
IS_NULLABLE |
varchar(254) | 对象中列的是否可为 Null。 根据 ISO 规则确定为 Null 性。 符合 ISO SQL 的 DBMS 无法返回空字符串。YES = 列可以包含 NULL 。NO = 列不能包含 NULL 。如果为 Null 性为未知,该列将返回零长度字符串。 为此列返回的值不同于为 NULLABLE 该列返回的值。 |
SS_DATA_TYPE |
tinyint | 扩展存储过程使用的 SQL Server 数据类型。 有关详细信息,请参阅数据类型。 |
1 有关详细信息,请参阅 ODBC 概述。
权限
对架构的要求 SELECT
和 VIEW DEFINITION
权限。
注解
sp_columns
遵循分隔标识符的要求。 有关详细信息,请参阅 数据库标识符。
示例
本文中的 Transact-SQL 代码示例使用 AdventureWorks2022
或 AdventureWorksDW2022
示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。
以下示例返回指定表的列信息。
USE AdventureWorks2022;
GO
EXEC sp_columns
@table_name = N'Department',
@table_owner = N'HumanResources';
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
以下示例返回指定表的列信息。
USE AdventureWorksDW2022;
GO
EXEC sp_columns
@table_name = N'DimEmployee',
@table_owner = N'dbo';