我正在尝试编写一个可以解析存储过程的自定义代码生成器。我写了一些正则表达式,但它们似乎并不常用。我有权访问数据库;是否存在将返回所需参数和可能返回值的系统查询?我玩过sp_depends,但它似乎没有包含参数。是否有任何其他系统过程可能对此有用? ......我试错了吗?
答案 0 :(得分:1)
您可以从
获取参数select c.*
from syscolumns c
inner join sysobjects o on o.id = c.id
where o.type = 'P' and o.name = '<storedProcName>'
正如Marc所说,返回值很棘手。你可能有
if (...)
select * from Customers
else
select * from CustomerOrders
所以,那里不会有太大的成功。当然我不知道什么样的人会写上面的东西,或者为什么,但这是可能的,所以......
答案 1 :(得分:0)
sp_help可以为存储过程提供参数(及其数据类型)
答案 2 :(得分:0)
参数应该在元数据表中可用(我好像记得它们甚至可能在针对proc的object_id的syscolumns中)。或info-schemas。
然而,由于SP没有非常正式的输出,因此结果很棘手。 UDF具有更强大的元数据。使用SP可以做的最好(它仍然是'不能'是SET FMT_ONLY ON,执行它并希望它不使用任何扩展存储过程......