2013-12-12 6 views
5

से अपवाद संदेश कैसे वापस करें I अपवाद होने पर प्रक्रिया से त्रुटि संदेश वापस करना चाहते हैं। SQL सर्वर में आप Error_Number() और Error_Message() का चयन करेंगे। मैं FirebirdSqlफ़ायरबर्ड एसक्यूएल में, प्रक्रिया

में यह करना होगा कैसे
SET TERM^; 

CREATE PROCEDURE sprocname 
(id int) 
RETURNS 
(gcode int, errmsg varchar(250)) 
AS 
BEGIN 
    gcode = 0; 
    errmsg = ''; 
    -- do procedure code here 


    WHEN ANY DO 
    BEGIN 
    gcode = gdscode; -- ?? 
    errmsg = ??; 
    END 
    SUSPEND; 
END^ 

SET TERM ;^
+0

आप बस सीए नहीं कर सका अपवाद tch, यह कॉलर को बुलबुला होगा। –

+0

मैं संदेश और त्रुटि कोड को प्रारूपित करना चाहता हूं। यह एक इंट्रानेट वेब ऐप – edepperson

उत्तर

4

दुर्भाग्य से आपको लगता है कि ऐसा करने के लिए ग्राहक के पक्ष में, के रूप में यह वर्तमान में इस psql में प्राप्त करने के लिए संभव नहीं है की आवश्यकता होगी। (: लिंक अगले अल्फा रिलीज के साथ तोड़ सकता चेतावनी):

वहाँ Firebird ट्रैकर, जो Firebird 4 के लिए लागू किया गया है, जो 2017

में जारी किया जाएगा देखें Firebird 4 Alpha 1 release notes, section System Function RDB$ERROR() की उम्मीद है में एक feature request है

फ़ंक्शन RDB$ERROR() इनपुट के रूप में एक पीएसक्यूएल त्रुटि संदर्भ लेता है और सक्रिय अपवाद के विशिष्ट संदर्भ को देता है। इसका दायरा पीएसक्यूएल में अपवाद-हैंडलिंग ब्लॉक के संदर्भ तक ही सीमित है। अपवाद हैंडलिंग ब्लॉक के बाहर, RDB$ERROR में हमेशा NULL शामिल है।

वापसी मूल्य का प्रकार संदर्भ पर निर्भर करता है।

सिंटेक्स नियम

RDB$ERROR (context) 
context ::= { GDSCODE | SQLCODE | SQLSTATE | EXCEPTION | MESSAGE } 

[..]

उदाहरण

BEGIN 
    ... 
WHEN ANY DO 
    EXECUTE PROCEDURE P_LOG_EXCEPTION(RDB$ERROR(MESSAGE)); 
END 
+0

के लिए है, ठीक है, मुझे यकीन है कि आपका सही जवाब नहीं था, लेकिन अब से, मैं इसके लिए आपको क्रेडिट देने जा रहा हूं – edepperson

0
CREATE PROCEDURE ADD_COUNTRY (
    ACountryName COUNTRYNAME, 
    ACurrency VARCHAR(10)) 
AS 
BEGIN 
    INSERT INTO country (country, 
         currency) 
    VALUES (:ACountryName, 
      :ACurrency); 
    WHEN ANY DO 
    BEGIN 
     -- write an error in log 
    IN AUTONOMOUS TRANSACTION DO 
     INSERT INTO ERROR_LOG (PSQL_MODULE, 
          GDS_CODE, 
          SQL_CODE, 
          SQL_STATE) 
     VALUES ('ADD_COUNTRY', 
       GDSCODE, 
       SQLCODE, 
       SQLSTATE); 
    -- Re-throw exception 
    EXCEPTION; 
    END 
END 

http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-handleexceptions.html

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