भाग 1: के बारे में कुल चेतावनी ...
घोंसला बनाने से मुझे डर है कि वहाँ जो उन चेतावनी ट्रिगर रिकॉर्ड देखने का कोई सीधा रास्ता है कर रहा हूँ अपने कई स्तरों को ध्यान में रखते।
मुझे लगता है कि आपका सबसे अच्छा शॉट प्रत्येक समेकित फ़ंक्शन को एक बार में, शीर्ष-स्तरीय कथन के SELECT भाग से निकालने और क्वेरी चलाने के लिए होगा ताकि आप देख सकें कि कौन सा कुल शीर्ष स्तर पर चेतावनियां पैदा कर रहा है (यदि कोई भी)
उसके बाद आपको नेस्टेड प्रश्नों पर जाना चाहिए और प्रत्येक उप-क्वेरी को स्थानांतरित करना चाहिए जो शीर्ष-स्तर के योग को एक अलग विंडो में खिलाता है और वहां चलाता है, चेतावनियों की जांच करें। वास्तव में चेतावनियों का कारण बनने के लिए आपको घोंसले के अतिरिक्त स्तरों के लिए इसे दोहराना चाहिए।
आप निम्न विधियों को भी नियोजित कर सकते हैं।
भाग 2: सशर्त ब्रेकपॉइंट्स के बारे में ...
डिबगिंग के लिए, आप प्रत्येक नेस्टेड टेबल को बाहर ले जाते हैं और अपना डेटा एक अस्थायी तालिका में डाल देते हैं। इसके बाद आप उस अस्थायी तालिका में शून्य मानों की जांच करें। आपने एक आईएफ स्टेटमेंट में ब्रेकपॉइंट सेट किया है। मेरा मानना है कि यह एक सशर्त ब्रेकपॉइंट के करीब सबसे अच्छी चीज है।(यदि खंड अन्य शर्तों के निर्माण के लिए बदला जा सकता है)
यहाँ एक ठोस उदाहरण है,
इसके बजाय इस बात का :
SELECT A.col1, A.col2, SUM(A.col3) as col3
FROM (SELECT X as col1, Y as col2, MAX(Z) as col3
FROM (SELECT A as X, B as Y, MIN(C) as Z
FROM myTableC
) as myTableB
) as myTableA
कि यह:
SELECT A as X, B as Y, MIN(C) as Z
INTO #tempTableC
FROM myTableC
IF EXISTS (SELECT *
FROM #tempTableC
WHERE A IS NULL) BEGIN
SELECT 'A' --- Breakpoint here
END
SELECT X as col1, Y as col2, MAX(Z) as col3
INTO #tempTableB
FROM #tempTableC
IF EXISTS (SELECT *
FROM #tempTableB
WHERE X IS NULL) BEGIN
SELECT 'B' --- Breakpoint here
END
SELECT col1, col2, SUM(col3) as col3
FROM #tempTableB as myTableA
स्रोत
2012-12-25 12:36:48
क्यों आप चेतावनी को पकड़ने के लिए की आवश्यकता है के साथ पंक्तियों को अनदेखा कर सकते हैं? एसक्यूएल केवल शून्य मानों को अनदेखा कर देगा, जो आमतौर पर करने के लिए सही काम है। आपके उदाहरण में, यदि आपकी तालिका में '{-1, शून्य, -2}' है, 'अधिकतम (ए)' '-1' लौटाएगा, जबकि' अधिकतम (isnull (a, 0)) '' ' । –
मुझे पता है कि मेरे तर्क को दोबारा जांचने के लिए चेतावनी कहाँ जा रही है/क्यों – Alex