gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:05:15 25 4
gpt4 key购买 nike

我想获得我可以从 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 的值,则可以将其转换为有用的东西,您可以从中派生列。” :有什么想法吗?

最佳答案

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

如果您知道这些过程没有副作用,并且不在分支中SELECT,那么试试SET FMTONLY ON 技巧 - 但至少了解可能的影响。

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

关于c# - 使用 Microsoft.SqlServer.Management.Smo 从 StoredProc 获取结果列而不执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com