也谈varchar2的最大值


一、本机环境
select * from  v$version where rownum <=2;
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production 
 
select userenv('language') from  dual;
 
AMERICAN_AMERICA.ZHS16GBK
二、实验
1、varchar2的最大长度
create table test1 (name varchar2(4001));
---ORA-00910: specified length too long for its datatype
--可见varchar2的最大长度是4000bit。
 
2、char的最大长度
create table test2 (name char(2001));
--ORA-00910: specified length too long for its datatype
--可见char的最大长度是2000bit。

3、varchar2的最大插入英文字节
create table test (name varchar2(4000));
DECLARE
   i           NUMBER (6)      := 1;
   ls_buffer   VARCHAR2 (4000);
   v_temp      VARCHAR2 (6);
BEGIN
   WHILE (i <= 400)
   LOOP
      FOR j IN 0 .. 9
      LOOP
         -- select substr(to_char(j),0,1) into v_temp from  dual;
         ls_buffer := ls_buffer || j;
      END LOOP;
      i := i + 1;
   END LOOP;
   DBMS_OUTPUT.put_line (ls_buffer);
END;
 
  
 将其结果插入test表  
 
select lengthb(name) from  test   ---4000

-------------------------------------------------------------------------------------------------------
4、varchar2的最大插入汉字

DECLARE
   i           NUMBER (6)      := 1;
   ls_buffer   VARCHAR2 (4000) ;
   v_temp      VARCHAR2 (6);
BEGIN
   WHILE (i <= 100)
   LOOP
      FOR j IN 0 .. 9
      LOOP
         -- select substr(to_char(j),0,1) into v_temp from  dual;
         v_temp := '中国';
         ls_buffer := ls_buffer||v_temp;
      END LOOP;
      i := i + 1;
   END LOOP;
   DBMS_OUTPUT.put_line (ls_buffer);
END;
select    lengthb('汉')    from    dual;     -----二个字节
select lengthb('中国') from  dual;    ---四个字节
 
将其结果插入test表,OK没有问题。
select * from  test;
create table test3 (name varchar2(6));
insert into test3 values('中国人1');
ORA-12899: value too large for column "THSIMIS"."TEST3"."NAME" (actual: 7, maximum: 6)
 
---------------------------------------------------------------------------------
以上过程,和我们想的一样没有出现大家说的异常情况,欢迎大家说一下自己的想法。
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13726712/viewspace-687884/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13726712/viewspace-687884/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值