ORA-24805: Несоответствие типа LOB - PullRequest
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_1 и text_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.

Ответы [ 2 ]

2 голосов
/ 28 мая 2020

Вы можете использовать TO_CLOB для объединения столбцов на основе символов. Затем используйте CONCAT , который, кажется, может работать с CLOB. Попробуйте ниже.

SELECT DBMS_CRYPTO.HASH(CONCAT(TO_CLOB (TEXT_1) , TO_CLOB (TEXT_2)), 2)  FROM A;
1 голос
/ 28 мая 2020

Попробуйте запрос ниже:

SELECT sys.dbms_crypto.hash(to_clob(text_1 || text_2), 2)  from A;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...