2011-03-06 8 views
10

मैं इसOracle 10g: ORA-06,575: अमान्य स्थिति में समारोह

CREATE OR REPLACE FUNCTION tax 
(p_sal IN NUMBER(4)) 
RETURN NUMBER 
AS 
v_tax NUMBER(4); 
BEGIN 
v_tax:= CASE   
WHEN p_sal> 4000 THEN 
p_sal*0.33  
WHEN p_sal >2500 THEN 
p_sal*0.25  
WHEN p_sal >1500 THEN 
p_sal*0.20  
ELSE 0   
END; 
RETURN v_tax; 
END; 
/

जब मैं

तरह डालने stmt में इस कर समारोह का इस्तेमाल किया की तरह एक funcion बनाया
INSERT INTO employees(eno, ename, job, join_date, sal, comm) 
VALUES (7784,'allen','salesman',sysdate, 5000, tax(5000)); 

यह

तरह त्रुटि दिखाता है
ERROR: ORA-O6575: package or function tax is in invalid state. 

क्या कोई मुझे सुझाव दे सकता है कि यह कार्य वैध स्थिति में कैसे है? अग्रिम धन्यवाद।

+3

साथ त्रुटि (यों) की जाँच अधिक ध्यान से अपने प्रश्नों फ़ॉर्मेट करें, और एच.टी.एम.एल. टैगों खिताब से बच सकते हैं। साथ ही, कृपया अपने प्रश्नों के प्रासंगिक उत्तर स्वीकार करें। Http://stackoverflow.com/faq पर अक्सर पूछे जाने वाले प्रश्न देखें – Mat

उत्तर

2

सुनिश्चित करें कि आपके फ़ंक्शन त्रुटियों के बिना संकलित हैं। ओरेकल ने आपको ERROR: ORA-06575 के साथ बताया है।

इस कथन से अपने कार्य बनाएँ:

CREATE OR REPLACE FUNCTION tax (p_sal IN NUMBER) 
    RETURN NUMBER AS 
    v_tax NUMBER(4); 
BEGIN 
    v_tax:= CASE 
    WHEN p_sal> 4000 THEN p_sal*0.33 
    WHEN p_sal >2500 THEN p_sal*0.25 
    WHEN p_sal >1500 THEN p_sal*0.20 
    ELSE 0 
    END; 
    RETURN v_tax; 
END; 

आप जब पैरामीटर में एक NUMBER घोषित पैरामीटर सूची में (4) जरूरत नहीं है।

7

एक समारोह इस तरह संकलित किया गया है:

SHOW ERRORS 

दो मुख्य कारण हैं, जबकि Oracle में एक वस्तु अमान्य है::

    alter function tax compile; 
    

    फिर, साथ संकलन त्रुटियों की जांच

  1. कोड अमान्य है (और त्रुटि संदेश दिया जब आपने पर प्रयास किया इसे संकलित करें)। त्रुटि को ठीक करने के लिए पाठ्यक्रम का समाधान है और फिर इसे पुन: संकलित करें।
  2. ऑब्जेक्ट किसी अन्य ऑब्जेक्ट का संदर्भ देता है और अन्य ऑब्जेक्ट बदल गया था। समाधान अमान्य वस्तु को पुन: संकलित करना है।

इसके अलावा, कुछ डेटाबेस कनेक्शन ड्राइवर डेटाबेस में ऑब्जेक्ट्स के संदर्भ रखते हैं। यदि डेटाबेस में उन ऑब्जेक्ट्स की स्थिति बदल जाती है तो संदर्भ बाएं हो जाते हैं और आपको ऊपर दिए गए जैसा ही त्रुटि मिल जाएगी।

इस आदेश के साथ
10

चेक त्रुटियों:

Select * from user_errors where name='Your function name' 
3

आप SHOW ERROR आदेश

SQL> show error function Your_Function_Name; 
संबंधित मुद्दे