当前位置:  开发笔记 > 编程语言 > 正文

使用Microsoft.SqlServer.Management.Smo从StoredProc获取结果列而不执行它

如何解决《使用Microsoft.SqlServer.Management.Smo从StoredProc获取结果列而不执行它》经验,为你挑选了1个好方法。

我想获得一个可以从SP中获得的结果集和列的列表.我已经能够得到参数,脚本......但我不知道从哪里得到结果集和列名.

using Microsoft.SqlServer.Management.Smo;

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["mydbconn"].ConnectionString))
        {
            conn.Open();
            Server sv = new Server(new Microsoft.SqlServer.Management.Common.ServerConnection(conn));
            Database db = sv.Databases["mydb"];

            foreach (StoredProcedure sp in db.StoredProcedures)
            {
                string[] columns = sp.??????
            }

        }

有没有办法进入列?我最终试图编写一个代码生成器来自动编写数据访问对象.谢谢!

编辑:"另一个解决方案是,如果你可以获得ScalarResult的值,你可以将它转换为有用的东西,你可以从中派生出来." :任何想法如何实现?



1> Marc Gravell..:

这是一个众所周知的困难领域.有些系统通过执行带有SET FMTONLY ON启用的存储过程来尝试这个,但是它有一系列问题(即它仍然会执行一些代码,这可能很糟糕).众所周知,很难获得非平凡查询的模式(例如,不同的分支做不同的选择).

如果您知道这些程序是无副作用的,并且不在SELECT分支机构中,那么请尝试一下SET FMTONLY ON- 但至少要了解可能的影响.

对于查询,在某些方面,表值函数(UDF)可能更实用,因为模式是形式化的.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有