【问题标题】:ORA-00932: inconsistent datatypes: expected LONG BINARY got BLOBORA-00932: 不一致的数据类型: 预期 LONG BINARY 得到 BLOB
【发布时间】:2018-10-30 03:43:55
【问题描述】:
create or replace function CasLengthOfLongRaw( p_tname in varchar2,  
     p_cname in varchar2,  
     p_rowid in rowid ) return number  
AUTHID CURRENT_USER  as pragma autonomous_transaction;  
   l_length number;  
begin 
   execute immediate 
   'insert into TEMPCSSRPLLOB(LOBFIELD)  
   select to_lob(' || p_cname || ')  
   from ' || p_tname || '  
   where rowid = :x' using p_rowid;  
   select dbms_lob.getlength(LOBFIELD) into l_length  
   from TEMPCSSRPLLOB;  
   commit;  
    return  l_length;  
end; 

对于这个功能,我得到了

第 7 行错误和 ORA 错误 ORA-00932: 不一致的数据类型: 预期 LONG BINARY 得到 BLOB ORA-06512:在“CASLENGTHOFLONGRAW”,第 7 行 00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s”

【问题讨论】:

  • 一个善意的建议:请不要添加“尽快”、“紧急”等词。我删除了它。在 S.O 中,用户会花时间自愿帮助您。
  • 发布TEMPCSSRPLLOB的描述

标签: oracle


【解决方案1】:

The to_lob() functionLONGLONG RAW 值转换为 LOB。

根据错误消息,您的目标列LOBFIELDBLOB,因此预计由变量p_tname.p_cname 标识的源列是数据类型LONG RAW。很明显,从消息上看,已经是BLOB,所以不需要转换:

...
   execute immediate 
   'insert into TEMPCSSRPLLOB(LOBFIELD)  
   select ' || p_cname || '  
   from ' || p_tname || '  
   where rowid = :x' using p_rowid;  
...

但是由于该函数被称为CasLengthOfLongRaw,问题似乎确实是该函数执行了您想要的操作,但是您向它传递了一个不适合它应该执行的操作的表和列名的详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 2017-04-21
    • 2021-06-18
    • 2013-05-11
    • 2011-06-03
    • 1970-01-01
    • 2014-06-06
    • 2019-08-25
    相关资源
    最近更新 更多