我想获得一个可以从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)可能更实用,因为模式是形式化的.