0

让有表A(text_1 varchar2(4000 CHAR), text_2 varchar(4000 CHAR)) 这里是这个选择:

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

我收到错误 24805。我期待转换text_1text_2to 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 创建数据的示例。

4

2 回答 2

2

您可以使用TO_CLOB连接基于字符的列。然后使用似乎可以与 CLOB 一起使用的CONCAT 。下面试试。

SELECT DBMS_CRYPTO.HASH(CONCAT(TO_CLOB (TEXT_1) , TO_CLOB (TEXT_2)), 2)  FROM A;
于 2020-05-28T18:24:25.397 回答
1

请尝试以下查询,

SELECT sys.dbms_crypto.hash(to_clob(text_1 || text_2), 2)  from A;
于 2020-05-28T18:21:26.303 回答