0

您好我正在编写一个 T4 模板来为 Sql 服务器存储过程生成访问器。我混合使用了 SMO 和 CommandBuilder 的 DeriveParameters 方法来获取我需要的几乎所有信息。

但是,我无法找到一种方法来确定存储过程是否返回以及返回多少结果集。

本质上,我正在寻找一种复制 Codesmiths SchemaExplorer CommandResults.Count 属性的方法。

我不想走上解析存储过程测试的道路。

提前喝彩。

4

2 回答 2

2

SQL Server 不存储任何关于存储过程可能返回多少结果集的元数据。可能有 0、1 或 n,这可能会根据存储过程中的逻辑、​​传入的参数值、系统状态等而改变——所有在检索元数据时都无法考虑的事情. 即使是新的 2012 元数据功能也只处理描述存储过程中第一个结果集的形状 - 如果有更多,你自己。

所以不,我认为没有任何方法可以可靠地做到这一点。即使结果集的数量不能根据各种因素而改变,你能做的最好的就是蹩脚的SET FMTONLY ON;把戏(它有自己的一系列问题)并计算结果:

SET FMTONLY ON;
EXEC dbo.whatever;

如果执行存储过程会改变系统的状态,这显然不好,但对于报告式存储过程,在很多情况下可能没问题。

于 2012-08-30T13:50:55.967 回答
0

据我所知,除了解析存储过程主体之外没有其他办法(请记住,它可能包含条件,结果计数可能会根据它们而变化)。

于 2012-08-30T13:42:14.140 回答