मैं इसे पोस्ट करने से पहले अपने प्रश्न को फिर से पढ़ता हूं। हालांकि इस तकनीक को शायद .NET पर सीधे लागू नहीं किया जा सकता है, लेकिन आप कुछ इसी तरह से काम करने में सक्षम हो सकते हैं। तो:
मुझे हाल ही में टी-एसक्यूएल में बहुत गतिशील कोडिंग करना पड़ा है, और मैं निम्नलिखित दिनचर्या के साथ आया हूं। तुम इतनी तरह कोड का एक हिस्सा मिल गया है यह मानें कि:
DECLARE
@Command nvarchar(max)
,@SearchFor int
SET @Command = 'SELECT * from MyTable where PrimaryKey = @SearchFor'
SET @SearchFor = 1
EXECUTE sp_executesql
@Command
,N'@SearchFor int'
,@SearchFor
यह बहुत simplisitc निश्चित रूप से है - अगर आप गतिशील कोड क्या करने की जरूरत है, तो आप बेतहाशा परिसर में जटिल प्रश्न करने जा रहे हैं, और आप के रूप में पता चला है कि इन्हें डीबग करना बहुत मुश्किल हो सकता है। यहाँ कैसे मैं ऊपर कोड को फिर से लिखने करेंगे:
DECLARE
@Command nvarchar(max)
,@SearchFor int
,@Debug int
-- 0 = Run it
-- 1 = Run and display it
-- 2 = Display it
SET @Command = 'SELECT * from MyTable where PrimaryKey = @SearchFor'
SET @SearchFor = 1
SET @Debug = 1
IF @Debug > 0
-- Show the command that would be run
PRINT replace(@Command, '@SearchFor', cast(@SearchFor as varchar(10)))
IF @Debug < 2
-- Run it
EXECUTE sp_executesql
@Command
,N'@SearchFor int'
,@SearchFor
इस अतिरिक्त कोड लिखने और डिबग करने के लिए है, लेकिन एक बार यह जगह में है और काम कर रहा यह डिबगिंग स्थितियों में अमूल्य हो सकता है। यदि यह संग्रहीत प्रक्रिया का हिस्सा है, तो @Debug को पैरामीटर बनाएं जो 0 पर डिफ़ॉल्ट हो, और सुनिश्चित करें कि यदि 2 पर सेट किया गया है, तो प्रक्रिया वास्तव में कुछ भी नहीं करती है।
स्रोत
2009-08-10 14:15:05
महान ... इससे बहुत मदद मिलती है! – Toad