Oracle 11g: сравнение двух столбцов *LOB разных типов

У меня есть доступ только для чтения к базе данных, содержащей две схемы с такими таблицами:

schema1.A.unique_id, schema1.A.content
schema2.B.unique_id, schema2.B.content

A.unique_id и B.unique_id будут совпадать, а A.content и B.content — это столбцы *LOB, которые должны совпадать (это была не моя идея, лол). Что я хотел бы сделать, так это сравнить содержимое полей content и посмотреть, сколько из них равны. Однако один CLOB, а другой BLOB.

DBMS_LOB.COMPARE() — очевидный помощник, однако он сравнивает только два *LOB одного типа (например, CLOB против CLOB).

Вместо написания скрипта для получения содержимого полей и сравнения их в памяти, как я могу выполнить это сравнение в прямом PL/SQL? Есть ли способ преобразовать одно из полей на лету, чтобы типы совпадали (опять же, имейте в виду, что у меня есть доступ только для чтения)?

Спасибо!


person dmn    schedule 26.09.2016    source источник
comment
Как минимум, вам нужно знать, как преобразовать CLOB в BLOB — двоичное представление может использовать другой набор символов, поэтому метод convertToCLOB принимает параметр набора символов. Вы можете вызвать dbms_lob.convertToCLOB для столбцов BLOB (или convertToBLOB для столбцов CLOB), а затем сравнить, но это не будет очень эффективно.   -  person Justin Cave    schedule 26.09.2016
comment
@JustinCave Могу ли я использовать convertToCLOB(), если у меня нет прав на запись? Или вы думаете, что сравнение в памяти на локальной машине со скриптом будет быстрее, чем делать convertToCLOB()+compare()?   -  person dmn    schedule 26.09.2016
comment
dbms_lob.convertToCLOB ничего не пишет. Предполагая, что вы можете написать анонимный блок PL/SQL, вы можете использовать локальные переменные clob (или blob).   -  person Justin Cave    schedule 26.09.2016
comment
Хорошо, я вижу. Я нашел еще один ваш ответ (stackoverflow.com/questions/31902029/), и похоже, что мне нужно сохранить преобразованный вывод в заранее определенном файле BLOB. Может, мне просто написать сценарий, лол. Спасибо за помощь :D   -  person dmn    schedule 26.09.2016