2012-02-20 27 views
5

Tôi gặp sự cố khi thực hiện quy trình được lưu trữ bên dưới.
Tôi gặp lỗi ORA-00932: inconsistent datatypes: expected - got BLOB khi tôi thêm FM.FAXFILE_BLOB cột vào thủ tục được lưu trữ bên dưới. FAXFILE_BLOB là một lĩnh vực blob.

Nếu tôi xóa trường này, mọi thứ hoạt động tốt. Tôi không biết tại sao điều này lại xảy ra.
Xin vui lòng giúp ....

Lỗi "ORA-00932: kiểu dữ liệu không nhất quán: được mong đợi - có BLOB" trong Tham chiếu Tham chiếu

 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; 
/

Trả lời

10

Bạn không thể chỉ định DISTINCT nếu select_list chứa các cột LOB.

Hãy thử sử dụng truy vấn phụ vô hướng để lấy trường BLOB.

+0

Cảm ơn. Điều này đã giúp. Nhưng tại sao nó lại như thế? – Rohan

+1

Có một số hạn chế đối với LOB. Có lẽ đó là vì chúng được lưu trữ theo một cách khác với các kiểu dữ liệu cơ bản. Để tìm hiểu kỹ hơn, hãy tham khảo http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_working.htm#i1006278 và http://docs.oracle.com/cd/B28359_01/appdev. 111/b28393/adlob_tables.htm # i1000000 –

2

Các hạn chế dưới đây được áp dụng cho các toán tử đã đặt.

Các nhà khai thác thiết lập này tùy thuộc vào các hạn chế sau:

Các nhà khai thác bộ không có giá trị trên các cột kiểu BLOB, CLOB, BFILE, VARRAY, hoặc bảng lồng nhau.

Toán tử UNION, INTERSECT và MINUS không hợp lệ trên các cột LONG .

Nếu danh sách chọn trước toán tử thiết lập chứa biểu thức, thì bạn phải cung cấp bí danh cột cho biểu thức để tham chiếu đến nó trong order_by_clause.

Bạn cũng không thể chỉ định for_update_clause với toán tử đã đặt.

Bạn không thể chỉ định order_by_clause trong truy vấn con của các toán tử này.

Bạn không thể sử dụng các toán tử này trong câu lệnh SELECT có chứa biểu thức bộ sưu tập TABLE .

Tham chiếu doc.

Các vấn đề liên quan