我可以从存储过程中查询参数和“选定”列名吗?

时间:2009-02-20 05:17:52

标签: sql code-generation

我正在尝试编写一个可以解析存储过程的自定义代码生成器。我写了一些正则表达式,但它们似乎并不常用。我有权访问数据库;是否存在将返回所需参数和可能返回值的系统查询?我玩过sp_depends,但它似乎没有包含参数。是否有任何其他系统过程可能对此有用? ......我试错了吗?

3 个答案:

答案 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,执行它并希望它不使用任何扩展存储过程......