Es ist nicht wirklich klar, was der Zweck Ihrer Wrapper-Prozedur ist (Prüfung? Debugging?), und es scheint eine sehr umständliche Lösung zu sein. Wenn Sie erklären, warum Sie dies tun möchten, hat jemand vielleicht eine ganz andere und hoffentlich bessere Lösung.
Das größte Problem bei Ihrem Vorschlag ist, dass Sie Parameter nur als Zeichenfolgen übergeben können, und das bedeutet, dass Sie alle Probleme mit Escaping, Datenkonvertierung/-formatierung und SQL-Einschleusung behandeln müssen, die mit dynamisches SQL . Es wäre viel besser, jede Prozedur direkt aufzurufen und korrekt typisierte Parameter aus Ihrem aufrufenden Code zu übergeben.
Abgesehen davon, wenn Sie es wirklich wollen, können Sie so etwas tun:
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
Sie sollten sich auch sp_executesql