sp_columns (Transact-SQL)
适用于:Microsoft Fabric Microsoft Fabric Warehouse 中的 SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics 终结点
返回在当前环境中可查询的指定对象的列信息。
语法
sp_columns [ @table_name = ] object
[ , [ @table_owner = ] owner ]
[ , [ @table_qualifier = ] qualifier ]
[ , [ @column_name = ] column ]
[ , [ @ODBCVer = ] ODBCVer ]
参数
[ @table_name = ] object
是用于返回目录信息的对象的名称。 object 可以是表、视图或其他具有列(如表值函数)的对象。 object 的数据类型为 nvarchar(384),无默认值。 支持通配符模式匹配。
[ @table_owner = ] owner
是用于返回目录信息的对象的对象所有者。 owner 的数据类型为 nvarchar(384),默认值为 NULL。 支持通配符模式匹配。 如果未指定 owner,则遵循基础 DBMS 的默认对象可见性规则。
如果当前用户拥有一个具有指定名称的对象,则返回该对象的列。 如果未指定 owner,并且当前用户也没有包含指定 object 的表,则 sp_columns 将查找数据库所有者拥有的包含指定 object 的对象。 如果存在这样的对象,则返回该对象的列。
[ @table_qualifier = ] qualifier
是对象限定符的名称。 qualifier 为 sysname,默认值为 NULL。 多种 DBMS 产品支持对象的三部分命名方式 (qualifier.owner.name)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,它表示对象数据库环境的服务器名称。
[ @column_name = ] column
是一个单独的列,当只需要目录信息的一列时可使用该参数。 column 的数据类型为 nvarchar(384),默认值为 NULL。 如果未指定 column,则返回所有列。 在 SQL Server 中,column表示在 sys.columns 表中列出的列名。 支持通配符模式匹配。 为了获得最大互操作性,网关客户端应只采用 SQL-92 标准模式匹配(% 和 _ 通配符)。
[ @ODBCVer = ] ODBCVer
是所使用的 ODBC 的版本。 ODBCVer 的数据类型为 int,默认值为 2。 这指示 ODBC 版本 2。 有效值为 2 或 3。 对于版本 2 和 3 之间的行为差异,请参阅 ODBC SQLColumns 规范。
返回代码值
无
结果集
sp_columns 目录存储过程与 ODBC 中的 SQLColumns 等价。 返回的结果按 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 列的返回值以 10 为基数。 |
LENGTH | int | 数据的传输大小。1 |
SCALE | smallint | 小数点右边的数字位数。 |
RADIX | smallint | 数值数据类型的基数。 |
NULLABLE | smallint | 指定为 Null 性。 1 = 可以为 NULL。 0 = 不可以为 NULL。 |
备注 | varchar(254) | 该字段总是返回 NULL。 |
COLUMN_DEF | nvarchar(4000) | 列的默认值。 |
SQL_DATA_TYPE | smallint | SQL 数据类型在描述符的 TYPE 字段中显示的值。 该列与 DATA_TYPE 列相同,datetime 和 SQL-92 interval 数据类型除外。 该列始终返回值。 |
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 数据类型。 有关详细信息,请参阅 数据类型 (Transact-SQL)。 |
1 有关详细信息,请参阅 Microsoft ODBC 文档。
权限
需要对架构的 SELECT 和 VIEW DEFINITION 权限。
备注
sp_columns 遵循分隔标识符的要求。 有关详细信息,请参阅 Database Identifiers。
示例
以下示例返回指定表的列信息。
USE AdventureWorks2022;
GO
EXEC sp_columns @table_name = N'Department',
@table_owner = N'HumanResources';
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
以下示例返回指定表的列信息。
-- Uses AdventureWorks
EXEC sp_columns @table_name = N'DimEmployee',
@table_owner = N'dbo';
另请参阅
sp_tables (Transact-SQL)
目录存储过程 (Transact-SQL)
系统存储过程 (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈