ESQLC数据类型 - char和fixchar类型

40 阅读2分钟

GBase8s ESQL/C字符串数据类型

GBase8s ESQL/C支持5种字符串数据类型, 如果在数据库的列中使用字符串类型,例如CHAR或者VARCHAR, 以下ESQL/C字符串类型可以使用:

C语言的char类型 GBase8s ESQL/C预定义类型, fixchar, string, varchar lvarchar数据类型

具体使用那种数据类型,参考以下条件:

是否希望ESQL/C使用空字符来作为字符串的结束符。 是否希望使用空白字符填充。

ESQL/C 字符串类型 char数据类型

当应用程序从数据库的CHAR类型的列中,读取数据,保存到char类型的变量中,ESQL/C会添加空白字符在字符串的末尾,将最后一位留给终止字符null。

生成char数组时, 其长度应设定为n+1, n为数据库中列的长度, 1为null终止字符。

fixchar数据类型

fixchar为ESQL/C预定义的变量类型。

当应用程序从数据库的CHAR类型的列中,读取数据,保存到fixchar类型的变量中,ESQL/C会添加空白字符在字符串的末尾,不会添加null终止字符。

限制:不要使用fixchar类型来处理VARCHAR或者NVARCHAR的数据,如果使用fixchar,即使VARCHAR或NVARCHAR的数据长度小于fixchar的长度, 数据库服务器会将fixchar数据剩余的空间全部填充为空白字符, 导致空间浪费。

声明fixchar数据类型时,使用如下格式:

EXEC SQL BEGIN DECLARE SECTION;

  fixchar fch_name[n];

EXEC SQL END DECLARE SECTION;

其中n就是数据库的CHAR类型列的长度。

注意:

如果将以null终止符结尾的字符串拷贝到fixchar类型中,null终止符将会保存到数据库的列中,导致该数据无法查询出来。