ORA-01704: string literal too long
rusich
Дата: 24.03.2011 14:04:42
проблема при апдейте через sqlplus в базу oracle 10.2i строки больше 4000 characters возникает ошибка ORA-01704: string literal too long. колонка для вставки в базе выглядит так "smth_name CLOB". я просмотрел ответы на похожие вопросы, но там проблемы были связаны с ограниченностью varchar2 например. по книжке в CLOB можно хранить до 4Гб. пожете объяснить в чём проблема?
заранее спасибо за помощь.
env
Дата: 24.03.2011 14:14:21
rusich,
скрипт апдейта покажите
Elic
Дата: 24.03.2011 14:16:03
rusich |
---|
string literal too long. в чём проблема? |
В непонимании английского
rusich
Дата: 24.03.2011 15:08:32
UPDATE smhist.t_dashboard_panel set to_data_query='
литерал меньше 4000 characters
'
where inf_obj_id=205;
UPDATE smhist.t_dashboard_panel set to_data_query='
литерал больше 4000 characters
'
where inf_obj_id=206;
exit;
когда вместо 'литерал больше 4000 characters' вставляю 'литерал меньше 4000 characters' всё работает. этот скрипт вызываю батником:
SET VERIFY OFF;
WHENEVER OSERROR EXIT FAILURE;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
sqlplus user/user_pw@sid @script_name.sql sm user_pw sid > log.log
comphead
Дата: 24.03.2011 15:28:44
rusich,
1. desc smhist.t_dashboard_panel
2. дайте полностью апдейт
опционально дать NLS_CHARSET и NLS_LENGHTJ_SEMANTICS
Сергей Арсеньев
Дата: 24.03.2011 15:43:37
rusich,
Проблема в том, что длина самой соманды в 10G тоже ограничена как varchar2.
Пэтому когда Вы пытаетесь отослать длинное выражение в базу и натыкаются грабли.
Выражения как CLOB обрабатываются 11 версией. А в 10 заводить переменную CLOB в PL/SQL изменять ее, затем уж update с присвоением оной полю.
-2-
Дата: 24.03.2011 15:45:01
comphead, Сергей Арсеньев,
вы все еще не врубились? Elic идет к вам!
rusich
Дата: 24.03.2011 15:48:47
Всем большое спасибо за помощь. проблема решена.