当我尝试在数据类型为CLOB的字段上设置超过4000个字符的值时,出现以下错误:ORA-01704:字符串文字太长。
CLOB
任何建议,如果我必须设置无限个字符的值,哪种数据类型将适用于我,尽管对于我的情况,它恰好是大约15000字符。
15000
注意:我尝试存储的长字符串是用ANSI编码的。
rqenqsqc1#
使用CLOB操作时,您使用的是什么?
在任何情况下,您都可以使用PL/SQL来执行此操作
DECLARE str varchar2(32767); BEGIN str := 'Very-very-...-very-very-very-very-very-very long string value'; update t1 set col1 = str; END; /
SQLFdle上的证明链接
rxztt3cl2#
尝试将字符拆分成多个块,如下面的查询所示,然后尝试:
Insert into table (clob_column) values ( to_clob( 'chunk 1' ) || to_clob( 'chunk 2' ) );
这对我很管用。
a8jjtwal3#
为了解决我这边的这个问题,我不得不使用那里已经提出的建议的组合
DECLARE chunk1 CLOB; chunk2 CLOB; chunk3 CLOB; BEGIN chunk1 := 'very long literal part 1'; chunk2 := 'very long literal part 2'; chunk3 := 'very long literal part 3'; INSERT INTO table (MY_CLOB) SELECT ( chunk1 || chunk2 || chunk3 ) FROM dual; END;
希望这能帮上忙。
92dk7w1h4#
拆分将持续到4000个字符,具体取决于您要插入的字符。如果您正在插入特殊字符,则可能会失败。唯一安全的方法是声明一个变量。
mwkjh3gx5#
虽然这是一个非常古老的问题,但我认为分享经验仍然可以帮助其他人:
如果我们将大文本分解为4000字节/字符的块,并使用‘||’将它们连接在一起,则可以在单个查询中保存大文本
运行以下查询将告诉您:
1.包含4000字节的区块所需数量1.剩余字节数
由于在给定示例中您试图保存连续15000个字节(字符)的文本,因此,
select 15000/4000 chunk,mod(15000,4000) remaining_bytes from dual;
结果:
这意味着,您需要连接3个4000字节的区块和一个3000字节的区块,因此如下所示:
INSERT INTO <YOUR_TABLE> VALUES (TO_CLOB('<1st_4K_bytes>') || TO_CLOB('<2nd_4K_bytes>') || TO_CLOB('<3rd_4K_bytes>') || TO_CLOB('<last_3K_bytes>)');
fumotvh36#
INSERT INTO table(clob_column) SELECT TO_CLOB(q'[chunk1]') || TO_CLOB(q'[chunk2]') || TO_CLOB(q'[chunk3]') || TO_CLOB(q'[chunk4]') FROM DUAL;
zwghvu4y7#
在SQL Developper中,接受的答案对我不起作用,但这个答案和另一个答案的组合却起到了作用:
DECLARE str varchar2(32767); BEGIN update table set column = to_clob('Very-very-...-very-very-very-very-very-very long string value'); END; /
7条答案
按热度按时间rqenqsqc1#
使用CLOB操作时,您使用的是什么?
在任何情况下,您都可以使用PL/SQL来执行此操作
SQLFdle上的证明链接
rxztt3cl2#
尝试将字符拆分成多个块,如下面的查询所示,然后尝试:
这对我很管用。
a8jjtwal3#
为了解决我这边的这个问题,我不得不使用那里已经提出的建议的组合
希望这能帮上忙。
92dk7w1h4#
拆分将持续到4000个字符,具体取决于您要插入的字符。如果您正在插入特殊字符,则可能会失败。唯一安全的方法是声明一个变量。
mwkjh3gx5#
虽然这是一个非常古老的问题,但我认为分享经验仍然可以帮助其他人:
如果我们将大文本分解为4000字节/字符的块,并使用‘||’将它们连接在一起,则可以在单个查询中保存大文本
运行以下查询将告诉您:
1.包含4000字节的区块所需数量
1.剩余字节数
由于在给定示例中您试图保存连续15000个字节(字符)的文本,因此,
结果:
这意味着,您需要连接3个4000字节的区块和一个3000字节的区块,因此如下所示:
fumotvh36#
zwghvu4y7#
在SQL Developper中,接受的答案对我不起作用,但这个答案和另一个答案的组合却起到了作用: