2013-02-04 8 views
16

होने के नाते अभी भी PL/SQL में एक नौसिखिया, मैं कॉपी करने और निम्नलिखित ट्रिगर के आसपास चिपकाने किया गया है:क्या छूट तब होती है जब राइस कुछ अन्य करते हैं?

CREATE OR REPLACE TRIGGER FOO_TRG1 
    BEFORE INSERT 
    ON FOO 
    REFERENCING NEW AS NEW OLD AS OLD 
    FOR EACH ROW 
BEGIN 
    IF :NEW.FOO_ID IS NULL THEN 
     SELECT FOO_SEQ1.NEXTVAL INTO :NEW.FOO_ID FROM DUAL; 
    END IF; 

    EXCEPTION 
     WHEN OTHERS THEN RAISE; 
END FOO_TRG1; 
/
ALTER TRIGGER FOO_TRG1 ENABLE; 

मुझे लगता है कि शामिल अपवाद हैंडलिंग कोड बिल्कुल कुछ नहीं करता है और बस हटा दिया हो सकता है, के बाद से मुझे लगता है कुछ गलत होने पर भी एक त्रुटि संदेश प्राप्त होगा। क्या मैं सही हू?

(मुझे लगता है कि इस तरह के कोड आगे संपादन से पहले कोड का परिणाम है।)

उत्तर

28

हाँ, कि अपवाद कुछ नहीं करता है, लेकिन एक ही त्रुटि बाहर बढ़ा। यह भी त्रुटि की असली लाइन संख्या मुखौटा करने के लिए कार्य करता है। अगर मैं तुम थे तो मैं उसे हटा दूंगा।

जैसे:

SQL> declare 
    2 v number; 
    3 begin 
    4 select 1 into v from dual; 
    5 select 'a' into v from dual; 
    6 exception 
    7 when others 
    8 then 
    9  raise; 
10 end; 
11/
declare 
* 
ERROR at line 1: 
ORA-06502: PL/SQL: numeric or value error: character to number conversion error 
ORA-06512: at line 9 

बनाम:

SQL> declare 
    2 v number; 
    3 begin 
    4 select 1 into v from dual; 
    5 select 'a' into v from dual; 
    6 end; 
    7/
declare 
* 
ERROR at line 1: 
ORA-06502: PL/SQL: numeric or value error: character to number conversion error 
ORA-06512: at line 5 

पहले एक पंक्ति संख्या बढ़ाने के बजाय वास्तविक लाइन नंबर की ओर इशारा करते है। यह त्रुटियों को मुश्किल से ट्रैक कर सकता है।

0

यह कुछ भी नहीं करता है, यह आपराधिक पर पूछताछ कर रहा है। यह मूल रूप से कहता है "बस मस्ती के लिए, मैं बहाना करने जा रहा हूं कि वास्तविक रेखा के बजाय इस लाइन में त्रुटि आई।"

अपवाद हैंडलिंग पूरी भाषा का सबसे गलत समझा पहलू है। उपर्युक्त बहुत आम है, और मुझे लगता है कि यह मूल गलत धारणा से उत्पन्न होता है कि एक 'अनचाहे अपवाद' एक बुरी चीज है (यह लगभग सवाल पूछती है - आपने इसे क्यों संभाला नहीं?)। अगर केवल ओरेकल ने शब्दावली 'अपवाद' या 'अपवाद का सामना' किया था, तो हमें इस कोड का समर्थन करने वाले गरीब लोगों को बहुत कम 'जब अन्य' अपवाद हैंडलर हमारे जीवन को दुखी बनाते हैं।

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

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