incvasc() 函数将 INTERVAL 值的符合 ANSI SQL 标准的字符串转换为 interval 值。
语法
mint incvasc(inbuf, invvalue)
char *inbuf;
intrvl_t *invvalue;
inbuf
指向包含 ANSI 标准 INTERVAL 字符串的缓冲区的指针。
invvalue
指向初始化了的 interval 变量的指针。
用法
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 824 -
您必须以您想要此变量拥有的限定符来初始化 invvalue 中的 interval 变量。
inbuf 中的字符串可有开头的和结尾的空格。然而,从第一个有效数字到最后一个,
inbuf 仅可包含字符,它们是适合于 interval 变量的限定符字段的数字和定界符。
如果该字符串为空字符串,则 incvasc() 函数将 invvalue 中的值设置为空。如果该字
符串是可接受的,
则该函数设置 interval 变量中的值,
并返回零。
否则,
该函数将 interval
值中的值设置为空。
返回代码
0
转换成功。
-1260
不可能在指定的类型之间转换。
-1261
datetime 或 interval 的第一个字段中的数字太多。
-1262
datetimeinterval 中的非数值字符。
-1263
datetime 或 interval 值中的字段出界或不正确。
-1264
在 datetime 或 interval 值的末尾有额外的字符。
-1265
在 datetime 或 interval 操作上发生溢出。
-1266
datetime 或 interval 值与该操作不兼容。
-1267
datetime 计算的结果出界。
-1268
参数包含无效的 datetime 或 interval 限定符。
示例
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 825 -
demo 目录在文件 incvasc.ec 中包含此样例程序。
/*
* incvasc.ec *
The following program converts ASCII strings into interval (intvl_t) structure. It also
illustrates error conditions involving invalid qualifiers for interval values.
*/
#include
EXEC SQL include datetime;
main()
{
mint x;
EXEC SQL BEGIN DECLARE SECTION;
interval day to second in1;
EXEC SQL END DECLARE SECTION;
printf("INCVASC Sample ESQL Program running.\n\n");
printf("Interval string #1 = 20 3:10:35\n");
if(x = incvasc("20 3:10:35", &in1))
printf("Result = failed with conversion error:%d\n",x);
else
printf("Result = successful conversion\n");
/*
* Note that the following literal string has a 26 in the hours field
*/
printf("\nInterval string #2 = 20 26:10:35\n");
if(x = incvasc("20 26:10:35", &in1))
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 826 -
printf("Result = failed with conversion error:%d\n",x);
else
printf("Result = successful conversion\n");
/*
* Try to convert using an invalid qualifier (YEAR to SECOND)
*/
printf("\nInterval string #3 = 2007-02-11 3:10:35\n");
in1.in_qual = TU_IENCODE(4, TU_YEAR, TU_SECOND);
if(x = incvasc("2007-02-11 3:10:35", &in1))
printf("Result = failed with conversion error:%d\n",x);
else
printf("Result = successful conversion\n");
printf("\nINCVASC Sample Program over.\n\n");
}
输出
INCVASC Sample ESQL Program running.
Interval string #1 = 20 3:10:35
Result = successful conversion
Interval string #2 = 20 26:10:35
Result = failed with conversion error:-1263
Interval string #3 = 2007-02-11 3:10:35
Result = failed with conversion error:-1268