intoasc() 函数将 interval 变量的字段值转换为符合 ANSI SQL 标准的 ASCII 字符
串。
语法
mint intoasc(invvalue, outbuf)
intrvl_t *invvalue;
char *outbuf;
invvalue
指向要转换的初始化了的 interval 变量的指针。
outbuf
指向接收 invvalue 中的值的 ANSI 标准 INTERVAL 字符串的缓冲区的指针。
用法
intoasc() 函数将 interval 变量中字段的数字转换为它们的等同的字符,
并将它们以它
们之间的的定界符(连字符、空格、冒号或句号)复制到 outbuf 字符串。您必须以您想要
该字符串拥有的限定符来初始化 invvalue 中的 interval 变量。
该字符串不包括 SQL 语句用来定界 INTERVAL 文字的限定符或圆括号。outbuf 字
符串符合 ANSI SQL 标准。对于每一定界符(连字符、空格、冒号或句号),它包括一个
字符外加带有下列大小的字段。
字段 字段大小
开头字段 由精度指定
小数 由精度指定
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 831 -
所有其他字段 两位
带有 day(5) to fraction(5) 限定符的 interval 值产生输出的最大长度。该等同的字符
串包含 16 数字、4 定界符以及空终止符,总计 21 字节:
DDDDD HH:MM:SS.FFFFF
如果您未初始化 interval 变量的限定符,则 intoasc() 函数返回不可预计的值,但此
值不会超出 21 字节。
返回代码
0
转换成功。
<0
转换失败。
示例
demo 目录在文件 intoasc.ec 中包含此样例程序。
/*
* intoasc.ec *
The following program illustrates the conversion of an interval (intvl_t) into an ASCII
string.
*/
#include
EXEC SQL include datetime;
main()
{
mint x;
char out_str[10];
EXEC SQL BEGIN DECLARE SECTION;
interval day(3) to day in1;
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 832 -
EXEC SQL END DECLARE SECTION;
printf("INTOASC Sample ESQL Program running.\n\n");
printf("Interval (day(3) to day) string is '3'\n");
if(x = incvasc("3", &in1))
printf("Initial conversion failed with error: %d\n",x);
else
{
/* Convert the internal format to ascii for displaying */
intoasc(&in1, out_str);
printf("\tInterval value after conversion is '%s'\n", out_str);
}
printf("\nINTOASC Sample Program over.\n\n");
}
输出
INTOASC Sample ESQL Program running.
Interval (day(3) to day) string is '3'
Interval value afer conversion is ' 3'