如何在不知道输入参数的情况下获取存储过程返回的列?

时间:2012-11-12 08:40:59

标签: sql sql-server stored-procedures fmtonly

我想虚拟执行存储过程并获取返回的列。我使用fmtonly,如下所示:

set fmtonly on
exec spName null
set fmtonly off

但是使用fmtonly导致运行所有代码行并且这项工作的结果是ERROR。 做这项工作有什么解决方案吗?

1 个答案:

答案 0 :(得分:3)

您需要使用SQL Server 2012新增的sp_describe_first_result_set。请注意,这需要您提供输入参数(至少是类型)。

在T-SQL开发中,我们需要知道正在调用哪些过程以及预期的结果集是什么。在SQL Server 2012之前,对动态,运行时,过程输出和所需参数的发现几乎没有支持。这个新程序以及sp_describe_undeclared_parameters之类的其他程序可用于创建需要探索可用编程API表面的工具。这些被添加到2012年的事实应该表明在2012年之前无法妥善处理这些等价物。环回链接服务器等解决方案存在许多问题,主要是因为它们实际上会执行具有潜在灾难性影响的代码。