Transact-SQL 参考

sp_columns_ex

返回给定链接服务器表的列信息,每列一行。如果指定 columnsp_columns_ex 只返回给定列的信息。

语法

sp_columns_ex [ @table_server = ] 'table_server'
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @table_schema = ] 'table_schema' ]
    [ , [ @table_catalog = ] 'table_catalog' ]
    [ , [ @column_name = ] 'column' ]
    [ , [ @ODBCVer = ] 'ODBCVer' ]

参数

[@table_server =] 'table_server'

要返回其列信息的链接服务器的名称。table_server 的数据类型为 sysname,没有默认值。

[@table_name =] 'table_name'

要返回其列信息的表的名称。table_name 的数据类型为 sysname,默认值为 NULL。

[@table_schema =] 'table_schema'

要返回其列信息的表的架构名。table_schema 的数据类型为 sysname,默认值为 NULL。

[@table_catalog =] 'table_catalog'

要返回其列信息的表的目录名。table_catalog 的数据类型为 sysname,默认值为 NULL。

[@column_name =] 'column'

为其提供信息的数据库列的名称。column 的数据类型为 sysname,默认值为 NULL。

[@ODBCVer =] 'ODBCVer'

是当前所使用的 ODBC 版本。ODBCVer 的数据类型为 int,默认值为 2,表示 ODBC 版本 2。有效值为 2 或 3。有关版本 2 和版本 3 的行为差别,请参见 ODBC SQLColumns 规范。

返回代码值

结果集
列名 数据类型 描述
TABLE_CAT sysname 表或视图限定符的名称。多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。在 Microsoft® SQL Server™ 中,该列表示数据库名。在某些产品中,该列表示表所在数据库环境的服务器名。该字段可以为 NULL。
TABLE_SCHEM sysname 表或视图所有者的名称。在 SQL Server 中,该列表示创建表的数据库用户的名称。该字段始终返回值。
TABLE_NAME sysname 表或视图的名称。该字段始终返回值。
COLUMN_NAME sysname 所返回的 TABLE_NAME 每列的列名。该字段始终返回值。
DATA_TYPE smallint 与 ODBC 类型指示符对应的整型值。如果数据类型无法映射到 ODBC 类型,则为 NULL。本机数据类型名称在 TYPE_NAME 列中返回。
TYPE_NAME varchar(13) 表示数据类型的字符串。基础 DBMS 提供此数据类型的名称。
COLUMN_SIZE int 有效数字个数。PRECISION 列的返回值以 10 为基数。
BUFFER_LENGTH int 数据的传输大小。1
DECIMAL_DIGITS smallint 小数点右边的数字个数。
NUM_PREC_RADIX smallint 数字数据类型的基数。
NULLABLE smallint 指定是否可以为空。

1 = 可以为 NULL。
0 = NOT NULL。

REMARKS varchar(254) 该字段总是返回 NULL。
COLUMN_DEF varchar(254) 列的默认值。
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) 表中的列是否可以为空。根据 ISO 规则决定是否可以为空。遵从 ISO SQL 标准的 DBMS 无法返回空字符串。

YES = 列可以包含 NULL。
NO = 列不能包含 NULL。

如果不知道是否可以为空,该列则返回零长度字符串。

该列返回的值与 NULLABLE 列返回的值不同。

SS_DATA_TYPE tinyint SQL Server 数据类型,由开放式数据服务扩展存储过程使用。有关更多信息,请参见数据类型

  1. 有关更多信息,请参见 Microsoft ODBC 文档。
注释

通过查询对应于 table_server 的 OLE DB 提供程序的IDBSchemaRowset 接口的 COLUMNS 行集执行 sp_columns_extable_nametable_schematable_catalogcolumn 参数传递到此接口,用以限制返回的行。

如果指定链接服务器的 OLE DB 提供程序不支持 IDBSchemaRowset 接口的 COLUMNS 行集,sp_columns_ex 将返回空结果集。

权限

执行权限默认赋予 public 角色。

示例

下面的示例返回 titles 表的 title_id 列的数据类型。

USE master
EXEC sp_columns_ex 'LONDON1', 'titles', 'dbo', 'pubs', 
   'title_id'

请参见

sp_catalogs

sp_foreignkeys

sp_indexes

sp_linkedservers

sp_primarykeys

sp_tables_ex

sp_table_privileges

系统存储过程