在oracle中将超过32k字符的值插入长列

时间:2016-08-12 17:01:36

标签: database oracle

我有一个列类型为LONG的表。我知道我可以通过将列类型更改为CLOB来解决我的问题,但在这种情况下我没有这个选项。我需要在此列中插入超过32k字符的值。

假设我有一个名为test的表,其中c1类的列名为LONG

以下语句将产生错误。

insert into test(c1)values('string longer than 32k chars');
  

错误:ORA-01704:字符串文字太长了。

提前感谢您的帮助。

使用下面的tony示例我想做类似以下的事情:

declare
   x varchar2(40000) := rpad('x',40000,'x');
begin
   insert into test (c1) values (x);
end;

我知道你不能让varchar(2)变得那么大但我想要实现这个想法。

2 个答案:

答案 0 :(得分:1)

您可以从PL / SQL插入32K字符:

declare
   x varchar2(32767) := rpad('x',32767,'x');
begin
   insert into test (c1) values (x);
end;

答案 1 :(得分:-1)

无意义。你的意思是什么?

SQL> create table test(c1 long);

Table created.

SQL> insert into test(c1)values('string longer than 4000 chars');

1 row created.

SQL> select * from test;

C1
-------------------------------------------------
string longer than 4000 chars

1 row selected.