यह वास्तव में स्पष्ट नहीं है कि आपकी रैपर प्रक्रिया का बिंदु क्या है (ऑडिटिंग? डिबगिंग?), और यह एक बहुत ही अजीब समाधान की तरह लगता है। यदि आप समझाते हैं कि आप ऐसा क्यों करना चाहते हैं, तो किसी के पास पूरी तरह से अलग और उम्मीद से बेहतर समाधान हो सकता है।
आपके प्रस्ताव के साथ सबसे बड़ी समस्या यह है कि आप केवल पैरामीटर को स्ट्रिंग्स के रूप में पास कर सकते हैं और इसका मतलब है कि आपको डायनामिक एसक्यूएल . अपने कॉलिंग कोड से सही ढंग से टाइप किए गए पैरामीटर को पास करते हुए, प्रत्येक प्रक्रिया को सीधे कॉल करना बेहतर होगा।
इतना सब कह कर अगर आप वाकई इसे करना चाहते हैं तो आप कुछ इस तरह कर सकते हैं:
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