invdivdbl() 函数将 interval 值除以一个数值的值。
语法
mint invdivdbl(iv, num, ov)
intrvl_t *iv;
double num;
intrvl_t *ov;
iv
指向要被除的 interval 变量的指针。
num
数值的除数值。
ov
指向带有有效的限定符的 interval 变量的指针。
用法
输入和输出限定符必须同时属于同一 interval 类:
或者 year to month 类,
或者 day
to fraction(5) 类。如果 ov 的限定符不同于(同一类之内的)iv 的限定符,则 invdivdbl()
函数扩展该结果(如 invextend() 函数定义的那样)。
invdivdbl() 函数将 iv 中的 interval 值除以 num,并将结果存储在 ov 中。
num 中的值可为正值或负值。
返回代码
0
除法成功。
<0
除法失败。
-1200
数值的值(大小)太大。
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 837 -
-1201
数值的值(大小)太小。
-1202
num 参数为零(0)。
-1265
interval 操作发生溢出。
-1266
interval 值与该操作不兼容。
-1268
参数包含无效的 interval 限定符。
示例
demo 目录在文件 invdivdbl.ec 中包含此样例程序。
/*
* indivdbl.ec *
The following program divides an INTERVAL type variable by a numeric value and
stores the result in an INTERVAL variable. The operation is done twice, using INTERVALs with
different qualifiers to store the result.
*/
#include
EXEC SQL include datetime;
main()
{
char out_str[16];
EXEC SQL BEGIN DECLARE SECTION;
interval day to second daytosec1;
interval hour to minute hrtomin;
interval day to second daytosec2;
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 838 -
EXEC SQL END DECLARE SECTION;
printf("INVDIVDBL Sample ESQL Program running.\n\n");
/* Input is 3 days, 5 hours, 27 minutes, and 30 seconds */
printf("Interval (day to second) string = '3 5:27:30'\n");
incvasc("3 5:27:30", &daytosec1);
/* Divide input value by 3.0, store in hour to min interval*/
invdivdbl(&daytosec1, (double) 3.0, &hrtomin);
/* Convert the internal format to ascii for displaying */
intoasc(&hrtomin, out_str);
printf("Divisor (double) = 3.0 \n");
printf("--------------------------------\n");
printf("Quotient #1 (hour to minute)='%s'\n", out_str);
/* Divide input value by 3.0, store in day to sec interval variable */
invdivdbl(&hrtomin, (double) 3.0, &daytosec2);
/* Convert the internal format to ascii for displaying */
intoasc(&daytosec2, out_str);
printf("Quotient #2 (day to second) = '%s'\n", out_str);
printf("\nINVDIVDBL Sample Program over.\n\n");
}
输出
INVDIVDBL Sample ESQL Program running.
Interval (day to second) string = '3 5:27:30'
Divisor (double) = 3.0
---------------------------------------------
Quotient #1 (hour to minute) = ' 25:49'
Quotient #2 (day to second) = ' 1 01:49:10'
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 839 -
INVDIVDBL Sample Program over.