Het is niet echt duidelijk wat het punt van uw wrapper-procedure is (controleren? debuggen?) En het lijkt een erg onhandige oplossing. Als je uitlegt waarom je dit wilt doen, heeft iemand misschien een heel andere en hopelijk betere oplossing.
Het grootste probleem met uw voorstel is dat u parameters alleen als tekenreeksen kunt doorgeven en dat betekent dat u alle problemen met ontsnapping, gegevensconversie/opmaak en SQL-injectie moet afhandelen die gepaard gaan met dynamische SQL . Het zou veel beter zijn om elke procedure rechtstreeks aan te roepen, waarbij u correct getypte parameters uit uw oproepcode doorgeeft.
Dat gezegd hebbende, als je het echt wilt doen, kun je zoiets als dit doen:
create proc dbo.ExecuteProcedure
@ProcedureName sysname,
@Parameters nvarchar(max),
@Debug bit = 0x0,
@Execute bit = 0x1
as
set nocount on
begin
declare @sql nvarchar(max)
set @sql = 'exec ' + quotename(@ProcedureName) + ' ' + @Parameters
if @Debug = 0x1 print @sql
if @Execute = 0x1 exec(@sql)
end
go
exec dbo.ExecuteProcedure 'dbo.SomeProc', '@p1 = 1, @p2 = ''themhz''s proc''', 0x1, 0x0
Bekijk ook sp_executesql , die bijna precies doet wat u wilt, maar het moet ook alle parametergegevenstypen hebben, wat volgens u niet mogelijk is in uw scenario.