ORA-24805: LOB 类型不匹配

ORA-24805:LOB type mismatch

让tableA(text_1 varchar2(4000 CHAR), text_2 varchar(4000 CHAR)) 这是 select 的:

SELECT sys.dbms_crypto.hash(empty_clob() || text_1 || text_2, 2)  from A;

我收到错误 24805。我希望将 text_1text_2 转换为 CLOB 并相互连接。之后我需要使用下面的函数获得 hash_code 。此代码也将成为 PL/SQL 块的一部分(函数中插入语句的一部分)。 如果我要用这个:

SELECT sys.dbms_crypto.hash(to_clob('') || text_1 || text_2, 2)  from A;

现在一切正常。那么,问题是什么?

 create table A(text_1 varchar2(4000 CHAR), text_2 varchar2(4000 CHAR));
 insert into A(text_1,text_2)values ('test1','test2');
 commit;

下面是为 A 创建数据的示例。

请尝试以下查询,

SELECT sys.dbms_crypto.hash(to_clob(text_1 || text_2), 2)  from A;

您可以使用 TO_CLOB for concatenate your char based columns. Then use CONCAT,它似乎可以与 CLOB 一起使用。试试下面。

SELECT DBMS_CRYPTO.HASH(CONCAT(TO_CLOB (TEXT_1) , TO_CLOB (TEXT_2)), 2)  FROM A;