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