char和varchar2是oralce中的两种用来存储字符串的数据类型。但是其可以存储的字符的大小有一些特殊的地方。
长度:
在table 中:
char:1-255字节
varchar2:1-2000字节
在pl/sql中:
char:1-32767字节
varchar2:1-32767字节
所以根据以上,从pl/sql向table中insert,或者update数据的时候,要注意长度的变化。否则会出现“溢出”的错误
声明:
char的声明可以不用指定长度,系统会默认给一个8字节的长度。
varchar2必须指定长度
关于char和varchar2的使用
检索DB中的数据赋值给PL/SQL变量(“DB > PL/SQL”代表长度比较) | ||||
DB(字段类型) | 赋值 | PL/SQL | DB > PL/SQL | DB <= PL/SQL |
CHAR | ==〉 | VARCHAR2 | 长度溢出错 | DB中的内容原样赋给PL/SQL中的变量,如果CHAR型数据后有空格,不会被截掉 |
VARCHAR2 | ==〉 | CHAR | 长度溢出错 | DB中的内容原样赋给PL/SQL中的变量,但是会补充空格 |
PL/SQL中的数据登陆到DB中 | ||||
PL/SQL | 赋值 | DB(字段类型) | PL/SQL > DB | DB <= PL/SQL |
CHAR | ==〉 | VARCHAR2 | 长度溢出错 | 正常登陆数据,如果CHAR型数据后有空格,不会被截掉 |
VARCHAR2 | ==〉 | CHAR | 长度溢出错 | 正常登陆,但是会自动补充空格 |