• Pro*C/C++预编译器解析VARCHAR 类型成的一个结构
VARCHAR username[20];
转换后的结构如下:
struct
{
unsigned short len;
unsigned char arr[20];
} username;
使用VARCHAR 类型变量优点之一是通过FETCH 和SELECT 语句从Oracle 数据库中选择数据到宿主变量时,Oracle 会把数据长度记录到VARCHAR 变量的len 成员中,用户可以方便的得到数据长度,并给数据末尾置‘/0’结束符:
username.arr[username.len]=‘/0’;
• 空值处理
Ø 如果Oracle 返回空值到一个VARCHAR 宿主变量,Oracle 不改变该宿主变量原arr成员存储内容,也不改变len 成员的长度
Ø 如果设置VARCHAR 类型的宿主变量len 成员值为0,在通过其对目标数据表对应列进行INSERT 和UPDATE 时,在没有非空约束情况下,Oracle 更新对应数据库表该列数据为NULL
• 定义VARCHAR 变量必须指定其长度,类似“VARCHAR s[]”的使用是不合法的。
• 可以在一行中定义多个VARCHAR 变量:
Ø VARCHAR a[20],b[25];
• VARCHAR 变量长度可以是宏,也可以是任何在预编译过程中能识别的表达式。例如:
Ø #define MAX_LEN
Ø ...
Ø VARCHAR name[MAX_LEN];