ラッパー プロシージャのポイントが何なのか (監査? デバッグ?) が本当に明確ではなく、非常に厄介な解決策のように思えます。これを行う理由を説明すると、誰かがまったく別の、うまくいけばより良い解決策を持っているかもしれません.
あなたの提案の最大の問題は、パラメーターを文字列としてのみ渡すことができることです。つまり、 動的 SQL .呼び出し元のコードから正しく型指定されたパラメーターを渡して、各プロシージャを直接呼び出す方がはるかに優れています。
そうは言っても、本当にやりたい場合は、次のようにすることができます:
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
sp_executesql<も参照してください。 /a> 、これはほぼ正確にあなたが望むことを行いますが、すべてのパラメーターデータ型も必要であり、あなたのシナリオでは不可能だと言います.