Transact-SQL 参考

sp_sproc_columns

为当前环境中的单个存储过程或用户定义函数返回列信息。

语法

sp_sproc_columns [[@procedure_name =] 'name']
    [,[@procedure_owner =] 'owner']
    [,[@procedure_qualifier =] 'qualifier']
    [,[@column_name =] 'column_name']
    [,[@ODBCVer =] 'ODBCVer']

参数

[@procedure_name =] 'name'

是用于返回目录信息的过程名。name 的数据类型是 nvarchar(390),默认设置为 %,表示当前数据库中的所有表。不支持通配符模式匹配。

[@procedure_owner =] 'owner'

是过程所有者的名称。owner 的数据类型为 nvarchar(384),默认设置为 NULL。不支持通配符模式匹配。如果未指定 owner,则应用基础 DBMS 的默认过程可视性规则。

在 Microsoft® SQL Server™ 中,如果当前用户拥有带指定名称的过程,则返回有关该过程的信息。如果未指定 owner 且当前用户不拥有带指定名称的过程,则 sp_sproc_columns 查找由数据库所有者拥有的带指定名称的过程。如果存在该过程,则返回有关该过程的列信息。

[@procedure_qualifier =] 'qualifier'

是过程限定符的名称。qualifier 的数据类型是 sysname,默认设置为 NULL。多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。在 SQL Server 中,该参数表示数据库名。在某些产品中,该列表示表所在数据库环境的服务器名。

[@column_name =] 'column_name'

是单列并且当只需要目录信息的一列时才使用。column_name 的数据类型是 nvarchar(384),默认设置为 NULL。如果省略 column_name,则返回所有列。指定的值可以包含使用基础 DBMS 通配符匹配模式的通配符。为获得最大的互操作性,网关客户端应只采用 SQL-92 标准模式匹配(% 和 _ 通配符)。

[@ODBCVer =] 'ODBCVer'

是当前所使用的 ODBC 版本。ODBCVer 的数据类型是 int,默认设置为 2,表示 ODBC 2.0 版。有关 ODBC 2.0 版和 ODBC 3.0 版之间差别的更多信息,请参见 ODBC 3.0 版的 ODBC SQLProcedureColumns 规范。

返回代码值

结果集
列名 数据类型 描述
PROCEDURE_QUALIFIER sysname 过程限定符名称。该列可以为 NULL。
PROCEDURE_OWNER sysname 过程所有者名称。该列始终返回值。
PROCEDURE_NAME nvarchar(134) 过程名。该列始终返回值。
COLUMN_NAME sysname 返回的 TABLE_NAME 中每列的列名。该列始终返回值。
COLUMN_TYPE smallint 该字段始终返回值:

0 = SQL_PARAM_TYPE_UNKNOWN
1 = SQL_PARAM_TYPE_INPUT
2 = SQL_PARAM_TYPE_OUTPUT
3 = SQL_RESULT_COL
4 = SQL_PARAM_OUTPUT
5 = SQL_RETURN_VALUE

DATA_TYPE smallint ODBC 数据类型的整型代码。如果该数据类型不能映射到 SQL-92 类型,则该值为 NULL。本机数据类型名称在 TYPE_NAME 列中返回。
TYPE_NAME sysname 数据类型的字符串表示法。这是由基础 DBMS 表示的数据类型名称。
PRECISION int 有效数字个数。PRECISION 列的返回值以 10 为基数。
LENGTH int 数据的传输大小。
SCALE smallint 小数点右边的数字个数。
RADIX smallint 是数字类型的基数。
NULLABLE smallint 指定为空性:

1 = 可创建允许空值的数据类型
0 = 不允许空值

REMARKS varchar(254) 对过程列的描述。SQL Server 不为该列返回值。
COLUMN_DEF nvarchar(4000) 列的默认值。
SQL_DATA_TYPE smallint SQL 数据类型出现在描述符的 TYPE 字段时的值。该列与 DATA_TYPE 列相同,datetime 和 SQL-92 interval 数据类型除外。该列始终返回值。
SQL_DATETIME_SUB smallint 如果 SQL_DATA_TYPE 的值是 SQL_DATETIMESQL_INTERVAL,则为 datetime SQL-92 interval 子代码。对于 datetime 和 SQL-92 interval 以外的数据类型,该字段为 NULL。
CHAR_OCTET_LENGTH int character binary 数据类型列的最大长度(以字节为单位)。对于所有其它数据类型,该列返回 NULL。
ORDINAL_POSITION int 列在表中的顺序位置。表中的第一列为 1。该列始终返回值。
IS_NULLABLE varchar(254) 表中的列是否可以为空。根据 ISO 规则决定是否可以为空。遵从 ISO SQL 标准的 DBMS 无法返回空字符串。

如果列可包含 NULL 则显示 YES,如果列不能包含 NULL 则显示 NO。

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

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

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

注释

返回的列属于存储过程的参数或结果集。如果 sp_stored_procedures 为某个存储过程返回的 SP_NUM_PARAMETERSSP_NUM_RESULT_SETS 列为 –1(不确定),则 sp_sproc_columns 不为该存储过程返回行。在 SQL Server 中,只返回有关存储过程的输入和输出参数的列信息。

在 ODBC 中,sp_sproc_columnsSQLProcedureColumns 等效。返回的结果按 PROCEDURE_QUALIFIERPROCEDURE_OWNERPROCEDURE_NAME 和参数在过程定义内出现的次序排序。

权限

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

请参见

系统存储过程