Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहीत प्रक्रिया में एसक्यूएल त्रुटि कैसे प्राप्त करें

मेरे द्वारा उपयोग किए जाने वाले संग्रहीत कार्यविधि टेम्पलेट का हिस्सा यहां दिया गया है:

/*  CREATE PROCEDURE...  */

DECLARE
  @ErrorMessage   varchar(2000)
 ,@ErrorSeverity  tinyint
 ,@ErrorState     tinyint

/*  Additional code  */

BEGIN TRY

/*  Your code here  */

END TRY

BEGIN CATCH
    SET @ErrorMessage  = ERROR_MESSAGE()
    SET @ErrorSeverity = ERROR_SEVERITY()
    SET @ErrorState    = ERROR_STATE()
    RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)

    BREAK
END CATCH

/*  Further cleanup code  */

कोशिश करें/पकड़ें ब्लॉक मुश्किल हो सकते हैं लेकिन @@ त्रुटि से कहीं अधिक गहन हैं। सबसे महत्वपूर्ण बात यह है कि आप उनके भीतर विभिन्न error_xxx() फ़ंक्शंस का उपयोग कर सकते हैं। यहां, मैं त्रुटि को फिर से बढ़ाने के लिए पर्याप्त अन्य डेटा के साथ चर @ErrorMessage में उचित त्रुटि संदेश संग्रहीत करता हूं। यहां से, कितने भी विकल्प उपलब्ध हैं; आप @ErrorMessage को एक आउटपुट वैरिएबल बना सकते हैं, विशिष्ट त्रुटियों के लिए परीक्षण कर सकते हैं और उन्हें संभाल सकते हैं, या अपने स्वयं के त्रुटि संदेशों का निर्माण कर सकते हैं (या मौजूदा लोगों को स्पष्ट होने के लिए समायोजित कर सकते हैं - आप यह जानकर परेशान हो सकते हैं कि आप इसे कितनी बार करना चाहेंगे)। अन्य विकल्प स्वयं को प्रस्तुत करेंगे।

देखने के लिए कुछ:कुछ स्थितियों में, SQL दो त्रुटि संदेशों को एक के बाद एक फेंक देगा... और error_message() केवल अंतिम को ही पकड़ेगा, जो आमतौर पर "ऑब्जेक्ट बनाने का प्रयास विफल" जैसा कुछ कहता है, पहली त्रुटि संदेश में दी गई वास्तविक त्रुटि के साथ। यह वह जगह है जहाँ अपना स्वयं का त्रुटि संदेश बनाना आता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कौन सा जॉइन सिंटैक्स बेहतर है?

  2. SQL सर्वर:sql क्वेरी का उपयोग करके तालिका प्राथमिक कुंजी प्राप्त करें

  3. रिकॉर्ड डालने का सबसे अच्छा अभ्यास क्या है यदि यह पहले से मौजूद नहीं है?

  4. SQL:SQL सर्वर में डुप्लिकेट रिकॉर्ड हटाना

  5. क्या MS SQL सर्वर के बीच में सीमा सीमाएँ शामिल हैं?