在某一存储过程中,使用%TYPE获取的字段类型,但是在实际使用中会提示***string buffer too small***
而声明为VARCHAR2(255)的类型,也会提示上述错误。经过仔细对比之后,发现原数据库中的字段类型定义为VARCHAR2(255 CHAR),若使用这种定义,则没有问题。
不知道这两种定义方式有何区别,为什么前者会提示错误?还望高手解答,谢谢^_^

解决方案 »

  1.   

    VARCHAR2(size) [BYTE | CHAR]    Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes, and minimum is 1 byte or 1 character. You must specify size for VARCHAR2.     BYTE indicates that the column will have byte length semantics; CHAR indicates that the column will have character semantics.
     
        缺省是CHAR(字符),不是BYTE(字节)。
      

  2.   

    ls,
    缺省是字符(byte), CHAR才是字节.
      

  3.   

    %TYPE 获取的数据类型应该和数据库中的数据类型一样啊。
      

  4.   

    %TYPE 引用某个变量或数据库列表的数据类型来声明变量例:icode item_table.itemcode%type;
      

  5.   

    呃,谢谢大家,问题解决了,总结一下。
    %TYPE确实是引用源类型,但是由于数据是从另外一个表中拷来的,所以出现问题
    CHAR是字符,BYTE是字节。
    9i里面默认BYTE,10g的好像是CHAR了。
    十分感谢大家!!^_^