版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z.INFORMI*的学习 ESQL/C的数据类型数据类型SQL与C数据类型的对应简单类型SQL CCHARn char(n+1)CHARCTERn char *SMALLINT short intINTERGERINT long intSMALLFLOATREAL floatFLOATDOUBLE PRECISIONdoubleSERIAL long intDATE long int复杂类型SQL CDECIMALDEC NUMERIC dec_t or struct decimalMONEY dec_t or struct decimalDATETIME dtime_t or str
2、uct dtimeINREVER intrvl_t or struct intrvlVARCHAR varchar or string数据类型转换 转换类型 转换后FLOAT DECIMAL16SMALLFLOAT DECIMAL8INTERGER DECIMAL10,0SAMLLINT DECIMAL5,0 数据类型的转换函数有关CHAR类型的函数以空值结尾的串的操作函数rdownshift(char *s) 把一个字符串中的所有字母转换成小写形式。rupshift(char *s) 把一个字符串中的所有字母转换成大写形式。stcat(char *s, char *dest) 把一个字符串同
3、另一个字符串相连接。stcmpr(char *s1, char *s2) 比拟两个字符串。stcopy(char *from, char *to) 把一个字符串拷贝到另一个字符串。stleng(char *string) 统计字符串的长度。 定长串的操作函数bycmpr(char byte1, byte2, rpt len) 比拟两组连续的字节内存块。bycopy(char *from, char *to, int len) 把一块内存的内容拷贝到另一块内存。byfill(char *to, int len, char ch) 用字符填充指定的内存块。byleng(char from, int
4、 count) 统计有效字符的数目。有效字符是指字符串去除了末尾空格所剩的字符。 字符串操作函数ldchar(char *from, int num, char *to) 拷贝定长串到空值结尾的串。stchar(char *from, char *to, int num) 拷贝空值结尾的串到定长串。 字符串函数简单数值转换rstod(char *str, double *dblval) 把以空值完毕的字符串转换成C的double型rstoi(char *str, int *intval) 把以空值完毕的字符串转换成C的int类型。rstol(char *str, long *lngval) 把
5、以空值完毕的字符串转换成C的long类型。 DATE类型的函数创立内部日期rdefmtdate(long *jdate, char *frmt char *str) 生成具有确定格式的日期字符串。str字符串和fmt必须按月、日、年的同一顺序返回代码:0操作成功。-1204在str参数中有非法的月份。-1206在str参数中有非法的日期。-1209由于str中没有包含年、月、日各局部间的定界符,str的长度必须准确定义为6或8个字节长。-1212fmt中没有包含年、月、日局部。fmt和str的有效组合fmt str“mmddyy“DEC 25th 1997”“mmm.dd.yyyy“dec 2
6、5 1997”“mmm.dd.yyyy“DEC-25-1997”“mmm.dd.yyyy“12251997”“mmm.dd.yyyy“12/25/1997”“yy/mm/dd“97/12/25”“yy/mm/dd“1997,December, 25th“yy/mm/dd“In the year 1997, the month of December, its 25th day“dd-mm-yy“This 25th day of December, 1997”rmdyjul(short mdy3, long *jdate) 用三个短整数生成一个内部日期这三个整数是有关年、月、日的数字值。年必须以
7、完整的形式表达返回代码:0操作成功。-1204在mdy2中有非法年份。-1205在mdy1中有非法月份。-1206在mdy0中有非法日期。 rstrdate(char *str, long *jdate) 将一个字符串日期转换成一内部格式的日期。rtoday(long *jdate) 从系统日期创立一个内部日期值。 从内部日期转换成其他类型rfmtdate(ling jdate, char *fmt, char *str) 从内部格式的日期类型值创立格式化的字符串。返回代码:0操作成功。-1210内部日期不能被转换成月-日-年格式。-1211程序存储溢出,即存储分配错误。 rjulmdy(lo
8、ng jdate, short mdy3) 从一个内部日期生成一个含有3个短整数的数组对应内部日期的月、日、年。 rdatestr(long jdate, char *str) 从一个内部日期值创立缺省的日期字符串。 rdayofweek(long jdate) 给定一内部格式表示的日期,此函数返回所对应的星期中的*一天。 rleapyear(int year) 用来判断给定的年份是否为闰年。返回值: TRUE1 是闰年 FALSE0 不是闰年 简单数值类型的格式化函数rfmtdouble(double dbval, char *fmt, char *str) 将双精度格式化为指定的模板格式。
9、rfmtlong(double longval, char *fmt, char *str) 将长整型值格式化为指定的模板格式。可以构成格式模板串的字符:*以星号代替空格。&以0代替空格。#代表一个数字或空格的位置。左调整,显示一个逗号,仅当左边有数字时才显示。.显示一个小数点,一个格式模板串只能有一个小数点。-显示负号,当数字为负的时候显示。+显示正号,当数字为正的时候显示。(显示一个负号,同一起显示负值。)显示一个负号,同一起显示负值。$显示美元符号。 处理空值的数值类型函数risnull(int type, char *cvar) 检查C变量是否为空值。rsetnull(int type
10、, char *cvar) 给C变量置空值。 五其他函数typalign(int pos, int type) 返回一具有指定数据类型变量的下一个位置。rtypmsize(int sqltype, int sqllen) 返回你必须分配在存储单元中的指定的C或RDSQLD的字节数。rtyname(int sqltype) 返回一包含指定RDSQL类型名的以空结尾的串。rtypwidth(int sqltype, intsqllen) 返回一具有RDSQL类型的值转换为一字符类型时防止截取所需的最小字符数。 ESQL/C数据类型的进一步说明 DECIMAL数据类型的使用1、DECIMAL函数把C
11、的数据类型转换为DECIMAL值deccvasc(char *from, int len, dec_t *to) 把ASCII字符串转换成DECIMAL值。返回值:0转换成功-1200数字太大,上溢。-1201数字太小,下溢。-1213存在非数值字符。-1216存在错误指数。考前须知:1字符串的前导空格被忽略。2字符串可以有前导符号“+或“-。3字符串可以包含e或E的指数形式,指数前可带符号“+或“-。 deccvint(int from, dec_t *to) 把C的整数转化成DECIMAL值。deccvlong(long from, dec_t *to) 把C的长整数转化成DECIMAL值
12、。deccvdbl(double from, dec_t *to) 把C的双精度值转化成DECIMAL值。 2、DECIMAL函数把DECIMAL值转换成字符型dectoasc(dec_t *from, char *to, int len, int rt) 把DECIMAL值转换成ASCII字符串。说明:len串缓冲区字节的最大长度。rt表示十进制小数右边十进制的位数。考前须知:1rt=-1,则十进制位的个数有*from的十进制值决定。2如果此数不适合长度len的字符串,则该函数将这个数转换为指数表示的形式。如果仍不适合,则串用“*号填满。如果数的长度短于串长,则右对齐且左部用空格填充。 de
13、cecvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格完毕的具有指定个数的字符串,且返回此字符串的指针。 decfcvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格完毕、小数点右边具有指定位数的字符串,且返回此字符串的指针。 rfmtdec(dec_t *from, char *format, char *to) 将DECIMAL值转换成格式化的字符串。 DECIMAL函数把DECIMAL值转换成数值型dectoint(dec_t *from, i
14、nt *to);dectolong(dec_t *from, long *to);dectodbl(dec_t *from, double *to) DECIMAL函数算术运算decadd(dec_t *op1, dec_t *op2, dec_t *result);decsub(dec_t *op1, dec_t *op2, dec_t *result);decmul(dec_t *op1, dec_t *op2, dec_t *result);decdiv(dec_t *op1, dec_t *op2, dec_t *result);返回代码:0操作成功-1200操作产生上溢-1201操作
15、产生下溢-1202试图用零作除数 DECIMAL函数DECIMAL操作deccmp(dec_t *dec1, dec_t *dec2);返回值:-1dec1dec2DECUNKNOW有一个是空值 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
16、)。INTERVAL数据类型存放时间间隔,组成局部同上。 定义宿主变量:DATETIME LargestQulifier TO SmallQulifierINTERVAL LargestQulifier TO SmallQulifier限定词:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION(n)也可以不指明修饰符,直接定义。 2、DATETIME和INTERVAL宏及转换函数在头文件datetime.h中定义了8个名字和5个宏,可以在操作DATETIME和INTERVAL值时使用它们。名字TU_YEAR用于YEAR修饰符域的名字TU_MONTHTU_HOU
17、RTU_DAYTU_MINUTETU_SECONDTU_FRAC用于开场的fraction修饰符域的名字TU_Fn用于完毕的fraction(n)修饰符域的名字(n=15)宏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值。dttoas
18、c(char *from, dtime_t *to) dttofmtasc(char *from, dtime_t *to, int len, char *fmt)4、操作DATETIME值的函数dtcurrent(dtime *to) 把当前日期和时间赋给一个DATETIME变量。dte*tent(dtime_t *from, dtime *to) 拷贝DATETIME值,使用的是不同的修饰符。 5、INTERVAL转换函数incvasc(char *from, intrvl_t *to)把ANSI兼容的字符串转换为INTERVAL值incvfmtasc(char *from, char *
19、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
20、 *dt0, int dq0) 求两个DATETIME值的差。 7、DATE类型和DATETIME类型之间的转换DATEDATETIME定义一个带有修饰符“year to day的DATETIME变量使用rfmtdate()函数把DATE值转换为一个字符串,使用的模板是yyyy-mm-dd使用dtcvasc()函数把字符串转换成DATETIME类型变量的值。如果需要的话,可以使用dte*tend()函数来调整DATETIME的修饰符。 DATETIMEDATE使用dte*tend()函数把DATETIME的修饰符调整为“year to day。使用dttoasc()函数以模板yyyy-mm-d
21、d创立一个字符串。使用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_
22、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 IN
23、TO o_num, i_num, s_num FROM itemsOPEN the_itemWHILE sq1code = 0 FETCH the_item IF sq1code = 0 THEN DISPLAY o_num, i_num, s_num END IFEND WHILE判断数据完毕DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num FROM itemsOPEN the_itemIF sq1code = 0 THEN FETCH the_item - - fetch first rowEND IFWHI
24、LE sq1code = 0 DISPLAY o_num, i_num, s_num FETCH the_itemEND WHILE定位INTO子句INTO子句给出了宿主变量的名字,由这些宿主变量接收数据库效劳器返回的数据。宿主变量的名字必须在SELECT或FETCH语句中的一个中出现,但不能在二者中都出现。下面是重新编写的在FETCH语句中指定宿主变量的例子:DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num FROM itemsOPEN the_itemWHILE status = 0 FETCH the_item INTO o_num, i_num, s_num IF status = 0 THEN DISPLAY o_num, i_num, s_num END IFEND WHILEFOREACH语句例:存储过程简单的存储过程;如何创立存储过程CREATE PROCEDURE 过程名 (参数1,参数2,)RETURNING 类型1, 类型2, ;-返回值类型DEFINE 变量1 类型1;DEFINE 变量2 类型2; ;SELECT 表字段1, 表字段2, INTO变量1, 变量2, FROM 表名 WHERE 条件;-与参数有关RETURN变量1,变量2,;END PROC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商品橱柜托管合同模板
- 保管合同模板格式
- 农药化肥销售合同范例
- 2024年园林景观设计与养护一体化服务合同
- 2024年23跨境电子商务服务合同
- 2024年加工原料购销合同:数量与价格
- 2024年夏令营医疗救护协议
- (2024版)劳动合同主体变更及保密协议书
- 建筑咨询建造师合作协议
- 2024年医疗器械研发与生产合同协议
- 环氧自流平工程质量验收单
- 大豆栽培技术PPT课件
- 导尿管相关尿路感染目标性监测方案
- 销售手册(共33页).doc
- 装饰工程分部分项工程量清单
- 废物处置分类及收费标准
- 《大学》导读解析
- 会计师事务所审计工作底稿之银行询证函模版
- 2022年胸腔镜辅助下二尖瓣置换、三尖瓣成形术的护理配合
- 六上数学《圆》练习题(超全)
- visa拒付争议处理
评论
0/150
提交评论