【问题标题】:Retrieving the number of results sets from a Sql server stored procedure from c#从 c# 中检索 Sql server 存储过程的结果集数量
【发布时间】:2012-08-30 13:36:46
【问题描述】:

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

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

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

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

提前干杯。

【问题讨论】:

    标签: c# sql-server stored-procedures smo multiple-resultsets


    【解决方案1】:

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

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

    SET FMTONLY ON;
    EXEC dbo.whatever;
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2010-09-08
        • 2015-08-22
        • 2012-01-15
        • 2018-12-21
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 2017-03-14
        • 1970-01-01
        相关资源
        最近更新 更多