2013-02-20 8 views
10

मैं निम्नलिखित प्रक्रिया है जो कुछ अनुप्रयोगों द्वारा प्रयोग किया जाता है:अपवाद हैंडलिंग ब्लॉक में pl/sql अपवाद को फिर से कैसे बढ़ाया जाए?

procedure p1 
is 
begin 
    bla bla bla; 
end; 

लेकिन वहाँ कोई अपवाद हैंडलिंग ब्लॉक है। तो इस सुविधा के अनुसार आवेदन लिखे गए थे।

अब मुझे पी 1 में त्रुटियों को लॉग करने की आवश्यकता है। लेकिन यह इस प्रक्रिया का उपयोग करने वाले अनुप्रयोगों को प्रभावित नहीं करना चाहिए।

कुछ इस तरह:

procedure p1 
is 
begin 
    bla bla bla; 

    exception when others then 
    log_error(sqlcode, sqlerrm); 
    raise_new_exception (sqlcode, sqlerrm); 
end; 

raise_application_error पहले पैरामीटर के मामले में [, -20,000 -20,999] सीमा में होना चाहिए। तो अगर अपवाद no_data_found उठाता है, तो यह इस त्रुटि को बढ़ा नहीं सकता है।

अपवाद_इनिट के मामले में, दूसरा पैरामीटर चर नहीं होना चाहिए। यह संख्यात्मक शाब्दिक होना चाहिए।

पुनश्च: के रूप में अस्थायी समाधान है, मैं उपयोग कर रहा हूँ पर अमल तत्काल

उत्तर

21

अपने त्रुटि रहता है, तो एक ही है, यह in the documentation समझाया गया है

... 
exception when others then 
    log_error(sqlcode, sqlerrm); 
    raise; 
end; 
/

करने के लिए परिवर्तन।

+1

@AlexPoole लिंक मृत। – ceving

+0

@ceving - धन्यवाद, मैंने वर्तमान लाइव लिंक को उत्तर में अपडेट करना आसान है, इसके बजाय भविष्य में अपडेट करना आसान है। –

+1

वर्तमान [लिंक] (http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/07_errs.htm#1049) –

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