2010-05-31 288 views
4

我希望能够将存储过程的名称作为字符串传递到另一个存储过程,并使用动态参数调用它。虽然我收到了一个错误。从另一个存储过程动态调用存储过程

具体来说,我已经试过:

create procedure test @var1 varchar(255), @var2 varchar(255) as 
    select 1 

create procedure call_it @proc_name varchar(255) 
    as 
    declare @sp_str varchar(255) 
    set @sp_str = @proc_name + ' ''a'',''b''' 
    print @sp_str 
    exec @sp_str 

exec call_it 'test' 

所以程序call_it应该调用带参数的 '一' 程序测试和 'B'。

当我运行上面的代码我得到:

Msg 2812, Level 16, State 62, Procedure call_it, Line 6 
Could not find stored procedure 'test 'a','b''. 

但是,在运行测试 'A', 'B' 正常工作。

回答

3

您应该使用“sp_executesql”过程。看看​​3210。

相关问题