2008-10-29 8 views
6

जब मैं अपने एमएस एसक्यूएल 2005 डेटाबेस पर एक विशेष संग्रहीत प्रक्रिया चलाने का प्रयास, मैं निम्नलिखित की तरह एक त्रुटि प्राप्त:मैं कैसे पता लगा सकता हूं कि किस संग्रहीत प्रक्रिया की एक पंक्ति पर एक त्रुटि हुई?

Subquery returned more than 1 value. This is not permitted when 
the subquery follows =, !=, <, <= , >, >= or when the subquery 
is used as an expression 

क्वेरी में सपा बहुत लंबा है और अन्य एस.पी. कहता है। यह त्रुटि स्पष्ट रूप से एसक्यूएल द्वारा उत्पादित की जा रही है, और कॉल स्टैक तक सभी तरह से लौट आई है, लेकिन इसका उल्लेख किए बिना कि एसपी या लाइन नंबर ने समस्या का कारण बना दिया है। त्रुटि को फेंकने से मैं कैसे पता लगा सकता हूं ताकि मैं इसे अधिक आसानी से डीबग कर सकूं?

उत्तर

5

Try/Catch block का उपयोग करके आपको जो कुछ भी मिल रहा है उसे देना चाहिए।

एक कैच ब्लॉक के दायरे में, निम्न सिस्टम फ़ंक्शन कि वजह से कैच ब्लॉक निष्पादित करने के लिए त्रुटि के बारे में जानकारी प्राप्त करने के लिए इस्तेमाल किया जा सकता:

* ERROR_NUMBER() returns the number of the error. 
* ERROR_SEVERITY() returns the severity. 
* ERROR_STATE() returns the error state number. 
* ERROR_PROCEDURE() returns the name of the stored procedure or trigger where the error occurred. 
* ERROR_LINE() returns the line number inside the routine that caused the error. 
* ERROR_MESSAGE() returns the complete text of the error message. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times. 

तो, आपके मामले में, ERROR_LINE() और ERROR_PROCEDURE() होना चाहिए जो आप चाहते हैं ...

+0

यह काम करता है! धन्यवाद! – apenwarr

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

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