Функция to_lob()
преобразует значение LONG
или LONG RAW
в большой объект.
Из сообщения об ошибке целевой столбец LOBFIELD
представляет собой BLOB
, поэтому ожидается, что исходный столбец, определенный переменными 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
, проблема, действительно, заключается в том, что функция делает то, что выхотите, но вы передаете ему информацию о неподходящем имени таблицы и столбца для операции, которую предполагается выполнить.