ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:271.64KB ,
资源ID:11432958      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11432958.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(informix学习总结.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

informix学习总结.docx

1、informix学习总结INFORMIX的学习第一章 ESQL/C的数据类型数据类型SQL与C数据类型的对应简单类型SQL ? ? ? ? CCHAR(n) ? ? ? ? ? char(n+1)CHARCTER(n) ? ? ? char *SMALLINT ? ? ? ? ?short intINTERGERINT ? ? ? ? ?long intSMALLFLOATREAL ? ? ? ? ?floatFLOATDOUBLE PRECISIONdoubleSERIAL ? ? ? ? ? long intDATE ? ? ? ? ? long int复杂类型SQL ? ? ? ? ?

2、CDECIMALDEC NUMERIC ? ? ? ? ?dec_t or struct decimalMONEY ? ? ? ? ?dec_t or struct decimalDATETIME ? ? ? ? ?dtime_t or struct dtimeINREVER ? ? ? ? ? ? ?intrvl_t or struct intrvlVARCHAR ? ? ? ? ? ? ?varchar or string数据类型转换 转换类型 ?转换后FLOAT ?DECIMAL(16)SMALLFLOAT ?DECIMAL(8)INTERGER ?DECIMAL(10,0)SAMLLI

3、NT ?DECIMAL(5,0) ? 数据类型的转换函数有关CHAR类型的函数1、 以空值结尾的串的操作函数rdownshift(char *s) ? ? ? ? ?把一个字符串中的所有字母转换成小写形式。rupshift(char *s) ? ? ? ? ? ? 把一个字符串中的所有字母转换成大写形式。stcat(char *s, char *dest) ? ? ?把一个字符串同另一个字符串相连接。stcmpr(char *s1, char *s2) ? ? 比较两个字符串。stcopy(char *from, char *to) ? 把一个字符串拷贝到另一个字符串。stleng(char

4、*string) ? ? ? ? ? 统计字符串的长度。 2、 定长串的操作函数bycmpr(char byte1, byte2, rpt len) ? 比较两组连续的字节内存块。bycopy(char *from, char *to, int len) 把一块内存的内容拷贝到另一块内存。byfill(char *to, int len, char ch) ? ? ?用字符填充指定的内存块。byleng(char from, int count) ? ? ? ? 统计有效字符的数目。有效字符是指字符串去除了末尾空格所剩的字符。 3、 字符串操作函数ldchar(char *from, int

5、num, char *to) ? 拷贝定长串到空值结尾的串。stchar(char *from, char *to, int num) ? 拷贝空值结尾的串到定长串。 4、 字符串函数简单数值转换rstod(char *str, double *dblval) 把以空值结束的字符串转换成C的double型rstoi(char *str, int *intval) ? ? 把以空值结束的字符串转换成C的int类型。rstol(char *str, long *lngval) ? 把以空值结束的字符串转换成C的long类型。 DATE类型的函数1、 创建内部日期rdefmtdate(long *j

6、date, 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 25 1997”?

7、“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 m

8、dy3, long *jdate) 用三个短整数生成一个内部日期这三个整数是有关年、月、日的数字值。(年必须以完整的形式表达)返回代码:? ? ?0操作成功。?-1204在mdy2中有非法年份。?-1205在mdy1中有非法月份。?-1206在mdy0中有非法日期。 rstrdate(char *str, long *jdate) 将一个字符串日期转换成一内部格式的日期。rtoday(long *jdate) ? ? ? ? ? 从系统日期创建一个内部日期值。 2、 从内部日期转换成其他类型rfmtdate(ling jdate, char *fmt, char *str) 从内部格式的日期类

9、型值创建格式化的字符串。返回代码:? ? ?0操作成功。?-1210内部日期不能被转换成月-日-年格式。?-1211程序存储溢出,即存储分配错误。 rjulmdy(long jdate, short mdy3) 从一个内部日期生成一个含有3个短整数的数组对应内部日期的月、日、年。 rdatestr(long jdate, char *str) 从一个内部日期值创建缺省的日期字符串。 rdayofweek(long jdate) 给定一内部格式表示的日期,此函数返回所对应的星期中的某一天。 rleapyear(int year) 用来判断给定的年份是否为闰年。返回值:? TRUE(1) ? ?

10、是闰年? FALSE(0) ? ?不是闰年 简单数值类型的格式化函数rfmtdouble(double dbval, char *fmt, char *str) 将双精度格式化为指定的模板格式。rfmtlong(double longval, char *fmt, char *str) 将长整型值格式化为指定的模板格式。可以构成格式模板串的字符:*以星号代替空格。&以0代替空格。#代表一个数字或空格的位置。左调整,显示一个逗号,仅当左边有数字时才显示。.显示一个小数点,一个格式模板串只能有一个小数点。-显示负号,当数字为负的时候显示。+显示正号,当数字为正的时候显示。(显示一个负号,同(一起显

11、示负值。)显示一个负号,同)一起显示负值。$显示美元符号。 处理空值的数值类型函数risnull(int type, char *cvar) ?检查C变量是否为空值。rsetnull(int type, char *cvar) 给C变量置空值。 (五)其他函数typalign(int pos, int type) 返回一具有指定数据类型变量的下一个位置。rtypmsize(int sqltype, int sqllen) 返回你必须分配在存储单元中的指定的C或RDSQLD的字节数。rtyname(int sqltype) 返回一包含指定RDSQL类型名的以空结尾的串。rtypwidth(int

12、 sqltype, intsqllen) 返回一具有RDSQL类型的值转换为一字符类型时避免截取所需的最小字符数。 ESQL/C数据类型的进一步说明 DECIMAL数据类型的使用1、DECIMAL函数把C的数据类型转换为DECIMAL值deccvasc(char *from, int len, dec_t *to) 把ASCII字符串转换成DECIMAL值。返回值:0转换成功-1200数字太大,上溢。-1201数字太小,下溢。-1213存在非数值字符。-1216存在错误指数。注意事项:(1)字符串的前导空格被忽略。(2)字符串可以有前导符号“+”或“-”。(3)字符串可以包含e或E的指数形式,

13、指数前可带符号“+”或“-”。 deccvint(int from, dec_t *to) ? ? 把C的整数转化成DECIMAL值。deccvlong(long from, dec_t *to) ?把C的长整数转化成DECIMAL值。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表示十进制小数右边十进制的

14、位数。注意事项:(1)rt=-1,则十进制位的个数有*from的十进制值决定。(2)如果此数不适合长度len的字符串,则该函数将这个数转换为指数表示的形式。如果仍不适合,则串用“*”号填满。如果数的长度短于串长,则右对齐且左部用空格填充。 dececvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格结束的具有指定个数的字符串,且返回此字符串的指针。 decfcvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格结束、小数点右边具有指定位数的字符串,且返回

15、此字符串的指针。 rfmtdec(dec_t *from, char *format, char *to) 将DECIMAL值转换成格式化的字符串。 1、 DECIMAL函数把DECIMAL值转换成数值型dectoint(dec_t *from, int *to);dectolong(dec_t *from, long *to);dectodbl(dec_t *from, double *to) 2、 DECIMAL函数算术运算decadd(dec_t *op1, dec_t *op2, dec_t *result);decsub(dec_t *op1, dec_t *op2, dec_t *

16、result);decmul(dec_t *op1, dec_t *op2, dec_t *result);decdiv(dec_t *op1, dec_t *op2, dec_t *result);返回代码:0操作成功-1200操作产生上溢-1201操作产生下溢-1202试图用零作除数 3、 DECIMAL函数DECIMAL操作deccmp(dec_t *dec1, dec_t *dec2);返回值:-1dec1dec2? ? ? ? ?DECUNKNOW有一个是空值 deccopy(dec_t *dec1, dec_t *dec2);decround(dec_t *dec1, int sc

17、ale);dectrunc(dec_t *dec1, int scale); DATETIME和INTERVAL使用方式及实例1、概述DATETIME数据类型存放时间,时间由以下部分组成:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND和秒的FRACTION(n)。INTERVAL数据类型存放时间间隔,组成部分同上。 定义宿主变量:DATETIME ? LargestQulifier ?TO ?SmallQulifierINTERVAL ? LargestQulifier ?TO ?SmallQulifier限定词:YEAR,MONTH,DAY,HOUR,MINUTE,SEC

18、OND,FRACTION(n)也可以不指明修饰符,直接定义。 2、DATETIME和INTERVAL宏及转换函数在头文件datetime.h中定义了8个名字和5个宏,可以在操作DATETIME和INTERVAL值时使用它们。名字TU_YEAR用于YEAR修饰符域的名字TU_MONTHTU_HOURTU_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、

19、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(d

20、time_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

21、算术操作的函数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类型之间的转换DATEDATETIME定义一个带有修饰符“year to day”的DATETIME变量使用rfmtdate()函数把DATE值转换为一个字符串,使用的模板是yyyy-mm-dd使用dtcv

22、asc()函数把字符串转换成DATETIME类型变量的值。如果需要的话,可以使用dtextend()函数来调整DATETIME的修饰符。 DATETIMEDATE使用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类型的值转换成DECIM

23、AL类型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语句中也许会有错误

24、,任何错误都可能使得数据库服务器不能执行语句。如果SQLCODE是0,表明SELECT语句的语法正确,游标可以使用。但是,在这一点上,程序并不知道游标能否返回数据行。取出行DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num INTO 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判断数据

25、结束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 IFWHILE sq1code = 0 DISPLAY o_num, i_num, s_num FETCH the_itemEND WHILE定位INTO子句INTO子句给出了宿主变量的名字,由这些宿主变量接收数据库服务器返回的数据。宿主变量的名字必须在SELECT或FETCH语句中的一个中出现,但不

26、能在二者中都出现。下面是重新编写的在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 WHILE第三章FOREACH语句例:第四章存储过程简单的存储过程;如何创建存储过程CREATE PROCEDURE 过程

27、名 (参数1,参数2,)RETURNING 类型1, 类型2, ;-返回值类型?DEFINE 变量1 类型1;DEFINE 变量2 类型2; ; SELECT 表字段1, 表字段2, INTO变量1, 变量2, FROM 表名 WHERE 条件;-与参数有关?RETURN变量1,变量2,;?END PROCEDURE; 数据传递向存储过程传递数据 由存储过程返回数据第一次调用过程返 事务处理应付发生在数据修改过程中所发生的任何类型的错误的最好办法是使用事务日志。当发生任何错误时,你能够告诉数据库服务器回滚到原来的状态。下面是前一个例子使用事务的情况:$ begin work; /*start

28、the transaction*/$ delete from items where order_num = $onum;del_result = sqlca.sqlcode; /*save two error */del_isamno = aqlca.sqlerrd1;/*.code numbers */del_rowcnt = sqlca.sqlerrd2; /*.and count of rows */if (del_result 0 ) /* some problem, */$ rollback work; /*.put everything back */ else /*everyt

29、hing worked ok, */ $ commit work; /*.finish transaction */这个例子中关键的一点是程序在结束事务前先把重要的返回值存储在SQLCA中。其原因是和所有的SQL语句一样,ROLLABCK WORK和COMMIT WORK语句在SQLCA中设置返回代码。除非事先保存好错误代码,否则在错误发生后执行ROLLBACK WORK语句会清除原来的错误代码,也就不能向用户报告了。使用事务的优点是无论发生了什么错误,数据库都处于一种可知的、可预计的状态。关于到底修改操作完成了多少的问题不会存在,要么全部完成,要么什么都没改。 错误处理GEGIN ON EXCEPTION IN (-206,-table doesnt exist-207column doesnt exist)SET err_numEND EXCEPTION WITH RESUME 自定义异常

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1