使用VARCHAR变量¶
在SQL语句中使用VARCHAR变量,只需在变量名前加上冒号即可,跟普通的变量使用没有区别,具体可以见下面的例子:
EXEC SQL BEGIN DECLARE SECTION;
...
char hnum;
VARCHAR hcity[40];
...
EXEC SQL END DECLARE SECTION;
main()
{
...
EXEC SQL SELECT city INTO :hcity
FROM employee
WHERE empnum = :hnum;
}
如果采用数据结构表示VARCHAR类型,那么执行上面的SELECT语句之后,hcity.len中存放实际取得的字符长度,hcity.arr存放取得的字符串。
而且,在C语言中使用VARCHAR变量,必须指明其成员变量,如:
printf("\n请输入城市名city:");
scanf("%s",hcity.arr);
hcity.len = strlen(hcity.arr);
如果用字符串数组表示VARCHAR类型,与使用char数组基本上没有区别。唯一的不同之处在于,如果直接使用char类型返回结果字符串,那么,在字符串长度小于char数组可容纳的大小时,系统将会自动填充空格在结果字符串的后面,并且在char数组的最后一个位置放置表示字符串结束的'\0'符号;而对于VARCHAR类型的数组,则不自动填充空格,而是直接在结果字符串的后边紧跟'\0',表示字符串结束了。上面的例子如果用VARCHAR转化的char数组做,如下:
printf("\n请输入城市名city:");
scanf("%s",hcity);
不需要设置长度信息,因为city数组中在字符串最后一个字符之后的位置会放入一个表示字符串结束的'\0'符号。