数据库菜鸟问大家个问题,大家是怎么理解下面的32767,和2000的,既然作为数据存储在ORACLE8中最大为2000,为什么定义作为变量的时候可以为32767
“CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。”

解决方案 »

  1.   

    不知道楼主在哪里看的这段描述,中文翻译害死人啊,尽量看原版吧The default length for a CHAR column is 1 byte and the maximum allowed is 2000 bytes. A 1-byte string can be inserted into a CHAR(10) column, but the string is blank-padded to 10 bytes before it is stored.-- Oracle 10G SQL Reference2000是指char(L)中的L,最大长度比如char(2000)是对的,char(2001)就错了。
      

  2.   

    他里面有一句话”作为数据存储在ORACLE8中最大为2000“就是你说的那句,不过”作为变量最大32767个字符“这个不知从哪来的。
      

  3.   

    "作为变量最大32767个字符"这个应该是在PL/SQL中将CHAR类型作为变量类型可以存储32767个字符,如SET SERVEROUTPUT ONDECLARE
      l_char CHAR(30000);
    BEGIN
      l_char := 'A';
      DBMS_OUTPUT.PUT_LINE(l_char);
      DBMS_OUTPUT.PUT_LINE(LENGTH(l_char));
    END;
    /
      

  4.   

    是Oracle 10G SQL Reference在官方网站上有的