2009-07-02 7 views
5

मैं अपने कोड को डीबग करने के लिए संग्रहीत प्रक्रिया में प्रिंटर स्टेटमेंट का उपयोग कर सकता हूं। मैं SQL सर्वर प्रबंधन स्टूडियो के संदेश टैब में आउटपुट देखता हूं। मैं उस संदेश टैब में एक या अधिक संपूर्ण चयन कथन आउटपुट को कैसे डंप कर सकता हूं?मैं संग्रहित प्रक्रिया से SQL सर्वर mgmt स्टूडियो में "संदेश" फलक में एक चयन कथन कैसे डंप कर सकता हूं?

मेरी संग्रहीत प्रक्रिया कई आउटपुट वैरिएबल लौटाती है इसलिए एक डेटासेट लौटने पर यहां कोई विकल्प नहीं है। मैं अपनी जटिल प्रक्रियाओं को डीबग करने का एक अच्छा तरीका खोजने के साथ संघर्ष कर रहा हूं।

उत्तर

3

पाठ संदेश विंडो शायद इसके लायक होने की तुलना में अधिक परेशानी होगी। इसके बजाय, मैं एक क्वेरी विंडो से प्रक्रिया डीबग करने की सिफारिश करता हूं। आप क्या कर सकते हैं एनयूएल के डिफ़ॉल्ट के साथ, आपकी प्रक्रिया में एक वैकल्पिक पैरामीटर जोड़ें। आपका ऐप इसे पारित नहीं करेगा, इसलिए आप इसे अपने लाभ के लिए उपयोग कर सकते हैं। उदाहरण के लिए:

Alter Procedure Foo(@Col1 int, @col2 varchar(20), @Debug Bit = NULL) 
As 
SET NOCOUNT ON 

If @Debug = 1 
    Begin 
    Select * From SomeTable Where Col1 = @Col1 
    End 

-- The rest of your code here 

फिर, जब आप एक प्रश्न खिड़की से इस प्रक्रिया कहते हैं, बस 1 का मान में प्रक्रिया के लिए कि @Debug पैरामीटर के लिए पारित

1

क्या यह संदेश फलक में होना चाहिए? मुझे हमेशा चुनिंदा क्वेरी चलाने के लिए सुविधाजनक लगता है, जो परिणाम परिणाम फलक में परिणामों को आउटपुट करता है, जिसमें दूसरे परिणाम सेट में वास्तविक आउटपुट होता है। कभी-कभी मैं एक 'पहचानकर्ता' कॉलम शामिल करता हूं जो परिणामों की पहचान करने में मदद करता है। उदाहरण के लिए:

select 'checkpoint1',a,b,c from table1 
.... 
select 'table @a', * from @a 
.... 
<actual query here> 

जब संग्रहीत proc बस जाओ इन मचान बयान

10

सेट "परिणाम पाठ" विकल्प को हटा दें और अपने परिणाम और संदेश टैब एक टैब को समेकित किया जाएगा, के संयोजन के लिए तैयार है आपका प्रिंट और चयन कथन।

पाठ परिणाम सेट करने के लिए, या तो:

  • नियंत्रण टी
  • क्वेरी मेनू \ परिणाम \ परिणाम के लिए करने के लिए मुद्रित करने के लिए एक प्रश्न की संपूर्ण सामग्री हो रही
2

आप अस्थायी तालिका, या तालिका चर पॉप्युलेट हो सकता है , अपनी समस्याग्रस्त संग्रहीत प्रक्रिया के भीतर से, संग्रहीत प्रक्रिया को कॉल करने के बाद उन तालिकाओं में से चुनें। एसपी में किसी भी अस्थायी तालिकाओं को छोड़ना और फिर से बनाना सुनिश्चित करें।

CREATE TABLE ##t1 (x int) 
GO 

CREATE PROCEDURE Foo AS 
BEGIN 
    TRUNCATE TABLE ##t1 
    INSERT INTO ##t1 SELECT column FROM table; 
END 
GO 

exec Foo; 
select x from ##t1; 
संबंधित मुद्दे

 संबंधित मुद्दे