Dynamiquement appeler une procédure stockée à partir d'une autre procédure stockée

Je veux être en mesure de passer le nom d'une procédure stockée comme une chaîne de caractères dans une autre procédure stockée et l'ont appelé avec les paramètres de la dynamique. J'obtiens une erreur.

Plus précisément, j'ai essayé:

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'

Donc la procédure call_it doit appeler la procédure de test avec des arguments 'a' et 'b'.

Lorsque j'exécute le code ci-dessus, j'obtiens:

Msg 2812, Niveau 16, État 62, Procédure call_it, Ligne 6
Ne pouvait pas trouver la procédure stockée 'test 'a','b".

Toutefois, l'exécution de test 'a','b', qui fonctionne bien.

OriginalL'auteur Greg | 2010-05-31