【问题标题】:Error "ORA-00932: inconsistent datatypes: expected - got BLOB" in Join Statement连接语句中出现错误“ORA-00932:不一致的数据类型:预期 - 得到 BLOB”
【发布时间】:2012-03-10 14:34:35
【问题描述】:

我在执行下面的存储过程时遇到问题。
添加时出现ORA-00932: inconsistent datatypes: expected - got BLOB 错误 FM.FAXFILE_BLOB 列在下面的存储过程中。FAXFILE_BLOB 是一个 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;
 /

【问题讨论】:

    标签: sql database oracle join ora-00932


    【解决方案1】:

    如果 select_list 包含 LOB 列,则不能指定 DISTINCT

    尝试使用标量子查询来获取 BLOB 字段。

    【讨论】:

    【解决方案2】:

    以下限制适用于集合运算符。

    集合运算符受以下限制:

    集合运算符对 BLOB、CLOB、BFILE 类型的列无效, VARRAY 或嵌套表。

    UNION、INTERSECT 和 MINUS 运算符在 LONG 上无效 列。

    如果集合运算符前面的选择列表包含表达式, 那么您必须为表达式提供一个列别名,以便 在 order_by_clause 中引用它。

    您也不能使用集合运算符指定 for_update_clause。

    您不能在这些的子查询中指定 order_by_clause 运营商。

    您不能在包含 TABLE 的 SELECT 语句中使用这些运算符 集合表达式。

    参考doc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 2021-06-18
      • 2011-06-03
      • 1970-01-01
      • 2017-02-28
      • 2012-08-14
      • 1970-01-01
      • 2015-01-14
      相关资源
      最近更新 更多