各位好,
最近碰到一个问题,一直没有解决。希望高手指点一二。
是这样的,之前我用的数据库9i 版本是0.1的。在一个字段里面放入了1000多个汉字,此字段类型设定为varchar(4000),数据库字符型是默认的gbk类型。按常理来说,放进去应该没有问题,但是出现了long 那个问题,也就是超出长度。
后来在网上查了一些资料,其中一位大侠说这是9i的一个bug,即在1000-2000之内的汉字都放不进去,而1000以下和2000-4000都可以放进,(我没有考证其是否正确),将9i的版本换成0.8的 就可以解决。 我没有去升级9i的版本,但是我认为既然9i的0.8可以解决 那么高版本的10g 应该也能搞的定。
于是我将9i换成10g,还是原来的类型和字符型,结果,还是放不进去。
我又不想把字段类型换成clob或者blob,这个问题应该怎么搞定?
谢谢指教!
最近碰到一个问题,一直没有解决。希望高手指点一二。
是这样的,之前我用的数据库9i 版本是0.1的。在一个字段里面放入了1000多个汉字,此字段类型设定为varchar(4000),数据库字符型是默认的gbk类型。按常理来说,放进去应该没有问题,但是出现了long 那个问题,也就是超出长度。
后来在网上查了一些资料,其中一位大侠说这是9i的一个bug,即在1000-2000之内的汉字都放不进去,而1000以下和2000-4000都可以放进,(我没有考证其是否正确),将9i的版本换成0.8的 就可以解决。 我没有去升级9i的版本,但是我认为既然9i的0.8可以解决 那么高版本的10g 应该也能搞的定。
于是我将9i换成10g,还是原来的类型和字符型,结果,还是放不进去。
我又不想把字段类型换成clob或者blob,这个问题应该怎么搞定?
谢谢指教!
create table test (user_name varchar2(4000));9iSQL>
1 declare
2 l_name varchar2(4000);
3 begin
4 l_name := lpad('', 1200, '马');
5 insert into test values(l_name);
6 commit;
7* end;
9iSQL> /PL/SQL procedure successfully completed.
9iSQL> declare
2 l_name varchar2(4000);
3 begin
4 l_name := lpad('x', 1200, '马');
5 insert into test values (l_name);
6 commit;
7 end;
8 /PL/SQL procedure successfully completed.
怎么没有啊?varchar 是varchar2的同义词varchar是所有的数据库都通用,而varchar2是oracle数据特用的,oralce为了与别的数据库一致,也兼容了varchar字段类型