Ошибка «ORA-00932: несовместимые типы данных: ожидается - получил BLOB» в заявлении о присоединении - PullRequest
9 голосов
/ 20 февраля 2012

У меня проблема с выполнением ниже хранимой процедуры.Я получаю ошибку ORA-00932: inconsistent datatypes: expected - got BLOB, когда добавляю столбец FM.FAXFILE_BLOB в хранимую процедуру ниже. FAXFILE_BLOB - это поле большого двоичного объекта.Если я уберу это поле, все будет работать нормально. Я не знаю, почему это происходит.Пожалуйста помоги....

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

Ответы [ 2 ]

13 голосов
/ 20 февраля 2012

Нельзя указать DISTINCT , если список выбора содержит столбцы больших объектов.

Попробуйте использовать скалярный подзапрос, чтобы получить поле BLOB.

2 голосов
/ 29 апреля 2014

Ниже приведены ограничения на операторы множества.

На операторы множеств распространяются следующие ограничения:

Операторы множеств недопустимы для столбцов типа BLOB, CLOB, BFILE, VARRAY или вложенной таблицы.

Операторы UNION, INTERSECT и MINUS недопустимы для столбцов LONG.

Если список выбора, предшествующий оператору set, содержит выражение, то вы должны предоставить псевдоним столбца длявыражение для ссылки на него в order_by_clause.

Нельзя также указать for_update_clause с помощью операторов набора.

Нельзя указать order_by_clause в подзапросе этих операторов.

Эти операторы нельзя использовать в операторах SELECT, содержащих выражения коллекции TABLE.

Ссылка doc .

...