2012-02-20 12 views
5

मुझे संग्रहीत प्रक्रिया के नीचे निष्पादन में समस्या है।
मुझे ORA-00932: inconsistent datatypes: expected - got BLOB की त्रुटि मिल रही है जब मैं नीचे संग्रहीत प्रक्रिया में FM.FAXFILE_BLOB कॉलम जोड़ता हूं। FAXFILE_BLOB एक ब्लॉब फ़ील्ड है।

अगर मैं इस क्षेत्र को हटा देता हूं तो सब कुछ ठीक काम करता है। मुझे नहीं पता कि यह क्यों हो रहा है।
कृपया मदद ....

त्रुटि "ओआरए -00 9 32: असंगत डेटाटाइप: अपेक्षित - बीओएलबी मिला" स्टेटमेंट में शामिल हों

 CREATE OR REPLACE Procedure HCADMIN.Proc_GetFaxDetailsByDate 
     ( 
      FromDate varchar2 default null, 
      ToDate varchar2 default null, 
      FaxNo varchar2 default null, 
      ClaimNo varchar2 default null, 
      NspCode varchar2 default null, 
      PolicyNo varchar2 default null, 
      HEGICNo varchar2 default null, 
      cur_faxdetails OUT SYS_REFCURSOR 
      ) 
     IS 
     BEGIN 
     OPEN cur_faxdetails For 

     Select distinct 
     FM.RECORDNO_NUM, 
     FM.CLAIMNO_VAR, 
     FM.FAXNO_VAR, 
     FM.FAXSTATUS_VAR, 
     FM.FAXTYPE_VAR, 
     FM.USERNAME_VAR, 
     FM.HEGIC_NO_VAR, 
     FM.RESEND_NO_NUM, 
     FM.RESNDCOUNT_NUM, 
     TO_date(FM.TIMESTAMP_DTE,'dd/MM/yyyy') as "TIMESTAMP_DTE", 
     FR.RECIPIENTFAXNO_VAR, 
     FM.FAXFILE_BLOB 

     From TPA_FAXMASTER FM Left join TPA_FAXRECIPIENT FR on          FM.RECORDNO_NUM=FR.RECORDNO_NUM 
WHERE 
     NVL(FM.FAXNO_VAR,'0')=NVL(FaxNo,NVL(FM.FAXNO_VAR,'0')) And 
     NVL(FR.RECIPIENTFAXNO_VAR,'0')=NVL(FaxNo,NVL(FR.RECIPIENTFAXNO_VAR,'0')) And   
     NVL(FM.CLAIMNO_VAR,'0')=NVL(ClaimNo,NVL(FM.CLAIMNO_VAR,'0')) And 
     NVL(FM.NSPID_VAR,'0')=NVL(NspCode,NVL(FM.NSPID_VAR,'0')) And 
     NVL(FM.POLICYNO_VAR,'0')=NVL(PolicyNo,NVL(FM.POLICYNO_VAR,'0')) And 
     NVL(FM.HEGIC_NO_VAR,'0')=NVL(HEGICNo,NVL(FM.HEGIC_NO_VAR,'0')) And  
     (NVL(TO_date(FM.TIMESTAMP_DTE,'dd/MM/yyy'),To_Date('09/09/9999','dd/MM/yyyy')) 
     BETWEEN NVL (TO_date(FromDate,'dd/MM/yyyy'), NVL(TO_date(FM.TIMESTAMP_DTE,'dd/MM/yyy'),To_Date('09/09/9999','dd/MM/yyyy'))) 
     AND NVL (TO_date(ToDate,'dd/MM/yyyy'), NVL(TO_date(FM.TIMESTAMP_DTE,'dd/MM/yyy'),To_Date('09/09/9999','dd/MM/yyyy')))); 
EXCEPTION 
WHEN NO_DATA_FOUND THEN 
    Null; 
WHEN OTHERS THEN 
    -- Consider logging the error and then re-raise 
    RAISE; 
END; 
/

उत्तर

10

आप अगर select_list LOB स्तंभों शामिल DISTINCT निर्दिष्ट नहीं कर सकते।

बीएलओबी फ़ील्ड प्राप्त करने के लिए स्केलर सबक्वायरी का उपयोग करने का प्रयास करें।

+0

धन्यवाद। इससे मदद मिली। लेकिन ऐसा क्यों है? – Rohan

+1

LOBs पर कुछ प्रतिबंध हैं। शायद ऐसा इसलिए है क्योंकि वे बुनियादी डेटा-प्रकारों से अलग तरीके से संग्रहित होते हैं। इस पर गहराई से जाने के लिए http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_working.htm#i1006278 और http://docs.oracle.com/cd/B28359_01/appdev पर जाएं। 111/b28393/adlob_tables.htm # i1000000 –

2

सेट ऑपरेटर पर प्रतिबंध लागू किए गए हैं।

सेट ऑपरेटरों निम्न प्रतिबंध के अधीन हैं:

सेट ऑपरेटरों प्रकार ब्लॉब, CLOB, BFILE, VARRAY, या नेस्टेड तालिका के कॉलम पर मान्य नहीं हैं।

यूनियन, इंटरसेक्ट, और मिनस ऑपरेटर लंबे कॉलम पर मान्य नहीं हैं।

यदि सेट ऑपरेटर से पहले चुनिंदा सूची में एक अभिव्यक्ति है, तो आपको को ऑर्डर_बी_क्लोज़ में संदर्भित करने के लिए अभिव्यक्ति के लिए कॉलम उपनाम प्रदान करना होगा।

आप सेट ऑपरेटर के साथ for_update_clause भी निर्दिष्ट नहीं कर सकते हैं।

आप इन ऑपरेटरों के सबक्वायरी में order_by_clause निर्दिष्ट नहीं कर सकते हैं।

आप इन ऑपरेटरों का चयन तालिका में संग्रह अभिव्यक्तियों सहित SELECT कथन में नहीं कर सकते हैं।

संदर्भ doc

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