我已经有一个基于SQL DMO的代码生成器,它为SQL Server 2008数据库中的任何存储过程编写C#函数。然而,Currenly代码生成器只能处理具有输入和输出参数的存储过程。对于返回多个记录的存储过程,代码生成器返回一个数据表,其中的行分别表示输出记录。
如果存储过程的输出是select * from Member where MemberID=1
,是否有办法使用SQL DMO来确定存储过程返回的字段?
由于
答案 0 :(得分:1)
我的猜测是你不能在DMO中这样做,因为DMO依赖于存储在SQL Server中的元信息,并且SP的结果集描述不是以这种方式存储的(据我所知)。
然而,您可以做的是让您的生成器在transaction内执行存储过程,并分析生成的SqlDataReader。查看GetName(),GetFieldType()和GetSchemaTable()方法来构建结果类。
执行后,回滚事务(如果SP对数据库进行任何更改)。
您也可以考虑将您的生成器升级到SMO,因为MSDN states将来不会支持DMO。