ORA-00932:不一致的数据类型:预期LONG BINARY得到了BLOB

时间:2018-05-20 07:38:49

标签: oracle

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:第7行“CASLENGTHOFLONGRAW”   00932. 00000 - “不一致的数据类型:预期%s获得%s”

1 个答案:

答案 0 :(得分:0)

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时,问题实际上似乎是函数执行了您想要的操作,但是您传递了它所支持的操作的不合适的表和列名称的详细信息。 / p>