我正在使用SQL Server 2012,有没有办法获取存储过程的所有参数以及传递给它的值?
我需要这些东西来构建一个xml。我的意思是这应该在正在执行的程序中发生,它应该适用于所有程序。
例如,让我们假设我们必须执行程序,
uspSave, @name='test' @age=20
uspDelete @id=2
现在在uspSave
程序中,我需要获取@name, @age
和值'test',20
在uspDelete
中,我应该获得值{2}的@id
。
为了获取列名,我尝试了这个,
select parameter_name
from information_schema.PARAMETERS
where specific_name = OBJECT_NAME(@@procid)
现在可以遍历上面的查询结果,我们可以得到值。
答案 0 :(得分:0)
我认为最好的办法是使用一些代码生成来生成所需的代码块。
即
您使用动态sql的方式因为范围而无法工作 - 在动态生成的SQL中无法访问参数,您需要通过sp_executesql将它们作为args传递,这会让您重新进入广场1。
e.g。
DECLARE @someval int = 7
EXECUTE('SELECT @someval') -- @someval is not in scope
所以,如果它有助于节省时间,那么代码gen看起来是你最好的选择。