我有一个列名为message
的表,其类型为NCLOB,ID
的类型为varchar2
我想更新特定ID的消息。我使用以下查询
update table_name set message='<<long XML Message>>' where ID=value
我收到以下错误:
Error at Command Line:6 Column:38
Error report:
SQL Error: ORA-01704: string literal too long
01704. 00000 - "string literal too long"
*Cause: The string literal is longer than 4000 characters.
*Action: Use a string literal of at most 4000 characters.
Longer values may only be entered using bind variables.
我尝试将xml存储到变量中并将列更新为此变量,但没有用
答案 0 :(得分:1)
Oracle对文字字符串的长度有限制,你达到了这个限制。你可以把它分成4000个字符的块。这可能会为你做到这一点。我现在无法测试它。
update table_name set message= '<4K>' || '<4K>' || '<4K>' where ID=value
看起来上述情况不起作用。
让我们试试这个,1K块:
update table_name set message= '<1st 1K>' where ID=value;
update table_name set message= message || '<2nd 1K>' where ID=value;
update table_name set message= message || '<3rd 1K>' where ID=value;
update table_name set message= message || '<4th 1K>' where ID=value;
我能够添加80K的消息长度。 我刚刚停止了,没有错误。