-1201操作产生下溢 -1202试图用零作除数
3、 DECIMAL函数——DECIMAL操作 deccmp(dec_t *dec1, dec_t *dec2); 返回值: -1dec1
DECUNKNOW有一个是空值 deccopy(dec_t *dec1, dec_t *dec2); decround(dec_t *dec1, int scale); dectrunc(dec_t *dec1, int scale);
DATETIME和INTERVAL使用方式及实例
1、概述
DATETIME数据类型存放时间,时间由以下部分组成:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND和秒的FRACTION(n)。
INTERVAL数据类型存放时间间隔,组成部分同上。 定义宿主变量:
DATETIME LargestQulifier TO SmallQulifier INTERVAL LargestQulifier TO SmallQulifier 限定词:
YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION(n) 也可以不指明修饰符,直接定义。
2、DATETIME和INTERVAL宏及转换函数
在头文件datetime.h中定义了8个名字和5个宏,可以在操作DATETIME和INTERVAL值时使用它们。 名字
TU_YEAR用于YEAR修饰符域的名字 TU_MONTH TU_HOUR TU_DAY TU_MINUTE TU_SECOND
TU_FRAC用于开始的fraction修饰符域的名字
TU_Fn用于结束的fraction(n)修饰符域的名字(n=1~5) 宏
TU_LEN(q)
TU_START(q) TU_END(q)
TU_DTENCODE(s,e) TU_IENCODE(p,s,e)
3、DATETIME和字符串之间的转换函数
dtcvasc(char *from, dtime_t *to)把ANSI兼容的字符串转换为DATETIME值
dtcvfmtasc(char *from, char *fmt, dtime_t *to) 把格式化的字符串转换为DATETIME值。 dttoasc(char *from, dtime_t *to)
dttofmtasc(char *from, dtime_t *to, int len, char *fmt) 4、操作DATETIME值的函数
dtcurrent(dtime *to) 把当前日期和时间赋给一个DATETIME变量。
dtextent(dtime_t *from, dtime *to) 拷贝DATETIME值,使用的是不同的修饰符。 5、INTERVAL转换函数
incvasc(char *from, intrvl_t *to)把ANSI兼容的字符串转换为INTERVAL值
incvfmtasc(char *from, char *fmt, intrvl_t *to) 把格式化的字符串转换为INTERVAL值。 intoasc(char *from, intrvl_t *to)
intofmtasc(char *from, intrvl_t *to, int len, char *fmt)
6、提供DATETIME和INTERVAL算术操作的函数
rdtaddinv(dec_t *dt, int dg, dec_t *in, int iq, dec_t *sum) 把一个INTERVAL值加到一个DATETIME值上。
rdtsub(det_t *dt2, int dq2, dec_t *dt1, int dq1, dec_t *dt0, int dq0) 求两个DATETIME值的差。
7、DATE类型和DATETIME类型之间的转换 DATE→DATETIME
定义一个带有修饰符“year to day”的DATETIME变量
使用rfmtdate()函数把DATE值转换为一个字符串,使用的模板是yyyy-mm-dd 使用dtcvasc()函数把字符串转换成DATETIME类型变量的值。
如果需要的话,可以使用dtextend()函数来调整DATETIME的修饰符。 DATETIME→DATE
使用dtextend()函数把DATETIME的修饰符调整为“year to day”。 使用dttoasc()函数以模板yyyy-mm-dd创建一个字符串。
使用rdefmtdate()函数以模板yyyy-mm-dd把字符串转换为一个DATE值。
8、有关DATETIME和INTERVAL值的其他运算
rinvtodec(dec_t *v, int q, dec_t *dec) 把INTERVAL或DATETIME类型的值转换成DECIMAL类型
redectoinv(dec_t *dec, dec_t *v, int q) 把DECIMAL值转换成INTERVAL或DATETIME类型值
第二章游标的使用
声明一个游标
DECLARE the_item CURSOR FOR
SELECT order_num, item_num, stock_num INTO o_num, i_num, s_num FROM items
打开一个游标
OPEN the_item
因为这是数据库第一次收到查询,所以这也是检测许多错误的时机。打开游标后,程序应检查SQLCODE的值。如果它包含了一个负数值,那么,游标是不可用的。SELECT语句中也许会有错误,任何错误都可能使得数据库服务器不能执行语句。 如果SQLCODE是0,表明SELECT语句的语法正确,游标可以使用。但是,在这一点上,程序并不知道游标能否返回数据行。
取出行
DECLARE the_item CURSOR FOR
SELECT order_num, item_num, stock_num INTO o_num, i_num, s_num FROM items OPEN the_item
WHILE sq1code = 0
FETCH the_item
IF sq1code = 0 THEN
DISPLAY o_num, i_num, s_num END IF END WHILE
判断数据结束
DECLARE the_item CURSOR FOR
SELECT order_num, item_num, stock_num FROM items OPEN the_item
IF sq1code = 0 THEN
FETCH the_item - - fetch first row END IF
WHILE sq1code = 0
DISPLAY o_num, i_num, s_num FETCH the_item END WHILE
定位INTO子句
INTO子句给出了宿主变量的名字,由这些宿主变量接收数据库服务器返回的数据。宿主变量的名字必须在SELECT或FETCH语句中的一个中出现,但不能在二者中都出现。下面是重新编写的在FETCH语句中指定宿主变量的例子:
DECLARE the_item CURSOR FOR
SELECT order_num, item_num, stock_num FROM items OPEN the_item WHILE status = 0
FETCH the_item INTO o_num, i_num, s_num IF status = 0 THEN
DISPLAY o_num, i_num, s_num END IF END WHILE
第三章FOREACH语句
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库informix学习总结(2)在线全文阅读。
相关推荐: