ORA-01704: слишком длинный строковый литерал - PullRequest
0 голосов
/ 17 января 2019

Можете ли вы посоветовать способ обновления полей clob в Oracle? Запрос простой, и при его выполнении я получаю ORA-01704: слишком длинный строковый литерал: Обновить имя таблицы Установить clob_field = значение2 Где column = условие1 и clob_field = значение1

Задача состоит в том, чтобы обновить значение в столбце clob новым значением.

Спасибо

1 Ответ

0 голосов
/ 17 января 2019

Является ли ваш код частью какой-либо процедуры PLSql или это просто оператор SQL?Вы передаете переменную «value2» как переменную связывания или это строка в кавычках внутри запроса?Вы используете 12c или более раннюю версию Oracle DB?

Обычно наиболее распространенная «неочевидная» проблема связана с тем, что тип varchar2 ограничен 4000 символами в операторах SQL.Если вы находитесь в процедуре PLSql, ограничение составляет 32 000 символов.

Можете ли вы предоставить пример кода?Дело в том, что следующие два оператора приводят к разному поведению:

update table_name 
set clob_field=value2 
where column=condition1 
  and clob_field=value1
update table_name 
set clob_field='Some very long string.....end of very long string' 
where column=condition1 
  and clob_field='Some even longer string.....end of even longer string'

Посмотрите на сообщение Ошибка: ORA-01704: слишком длинный строковый литерал - пример того, как поставитьобновление в блоке plsql для достижения ограничения в 32,767 символов.

edit: взгляните на post Работа с очень большими текстовыми данными и столбцом CLOB , тоже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...