获取存储过程结果列类型

Mei*_*Hat 10 sql-server stored-procedures datatypes

我试图获取存储过程返回的任何内容,以及列名及其类型。我可以用表来做到这一点,但我无法弄清楚存储过程。我尝试过,sp_columns但只能使其适用于表格。

我也尝试过这样的事情,但我不确定我应该匹配什么。

SELECT * 
FROM SYS.PROCEDURES (NOLOCK) AS AA
INNER JOIN SYS.SCHEMAS (NOLOCK) AS BB ON (AA.schema_id = BB.schema_id)
INNER JOIN SYS.COLUMNS (NOLOCK) AS CC ON (AA.object_id = CC.object_id)
Run Code Online (Sandbox Code Playgroud)

例如:

USER_ID VARCHAR(200)
Run Code Online (Sandbox Code Playgroud)

我只需要存储过程返回的列名及其数据类型。如果重要的话,SQL Server 版本是 2014。

有任何想法吗?谢谢。

mar*_*c_s 15

您应该能够为此使用新的系统存储过程sp_describe_first_result_set-有关详细信息请参阅 MSDN 文档

EXEC sp_describe_first_result_set N'YourStoredProcedureNameHere'
Run Code Online (Sandbox Code Playgroud)

  • 如果存储过程有临时表,则不起作用。 (2认同)

Sea*_*ser 13

特别是对于对象,有一个名为sys.dm_exec_describe_first_result_set_for_object的 DMV ,如果 SQL Server 能够确定它应该是什么(例如动态 SQL,不会返回有效结果),它将描述第一个结果集。

特别是对于 T-SQL 或批处理相关项目,有不同的 DMV 和伴随的系统存储过程。DMV 是sys.dm_exec_describe_first_result_set并且与 dmv 并行的存储过程是sp_describe_first_result_set