欢迎来到天天文库
浏览记录
ID:20880087
大小:153.83 KB
页数:10页
时间:2018-10-17
《将informixesqlc应用程序迁移到db2》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、将InformixESQL/C应用程序迁移到DB2本文档讲述数据库嵌入式SQL/C程序从ESQLC向DB2迁移过程屮所进行的分析、迁移过程。一、IDS与DB2嵌入式SQL差异性分析本部分主要对IBMInformixDynamicServer(简称为IDS)与DB2的嵌入式SQL基本语法、SQL通信区和游标和高级操作几个方而进行分析,列!II其不同之处。(一)基本语法扩展名IDS应用程序的扩展名为“.ec”,而DB2的扩展为“.sqc”,应将程序的扩展名修改为“.sqc”。SQL语句SQL语句都必须加前缘EXECSQL,以(;)结束成
2、为一个程序片断:EXECSQL;IDS和DB2都支持此种语法,且DB2仅支持此种语法,但IDS同时也支持将EXECSQL换为字符“$”,故要对程序巾的所有使用“$”的语句修改为EXECSQL。备注:所有的SQL语句都是不区分人小写,包括EXECSQL,故不对SQL语句的大小进行分析。主变量按照ANSI标准主变量必须在SQL记•句BEGINDECLARESECTION勹ENDDECLARESECTION之间进行定义,定义之后可以在SQL语句中使用,为了与数据库对象名(表名、视图名、列名等)区别,SQL语句中的主变量名前要
3、加冒号(:)作为标志。IDS和DB2都支持此种语法,.ftDB2仅支持此种语法,侃IDS同时也支持声明主变量方式为:$inta;EXECSQLintb;但IDS同时也支持在SQL语句中使用“$”来替换(:),如:EXECSQLSELECTCUNMFROMEVIAAWHEREACNO=$sACNO;故要将程序中以上三种方式修改为标准方式。字符串IDS同时支持双引号和单引号字符串,但DB2只支持单引号字符串,则需要用单引号字符串替换双引号字符串。例如需要将EXECSQLSELECT*FROMtablWHEREcolor="pred";修
4、改为:EXECSQLSELECT*FROMtablWHEREcolor='pred1;模糊查询IDS同时支持关键字like和MATCHES,两个关键字对应的多个字符和单个字符的匹配分别为%、_和*、?。若使用MATCHES,则需要对字符*?进行转义。IDS屮对字符串进行截収或匹配支持使川关键字str[a,b],其屮a为起始字符串下标(序号从1开始),b为要截取字符串的结束K标;这种使用方式耑要修改为like(where条件中)和SUbStr(StGnl,n2>,其中参数str为要取的字段名,nl为起始字符串下标(序号从1开始),n2
5、为需要截取字符串的个数,即n2=b-a+lo将所有存在的UNIQUE关键字都替换成DISTINCT关键字。(二)高级SQL操作数据库连接IDS使用如卜语句來建立数据痺(cmbc)连接:EXECSQLdatabasecmbc;使用如下语句来断开数据库连接:EXECSQLdatabaseclose;DB2使用如下语句來建立数据库(cmbc)连接EXECSQLCONNECTTOcmbc;如果要使用特定的用户标识(name)和密码(pwd),则使用如下语句:EXECSQLCONNECTTOsampleUSERnameUSINGpwd;断开数
6、据库cmbc连接:EXECSQLCONNECTRESET;故要将程序中以上三种方式修改为标准方式。事务操作IDS中语法打开事务:EXECSQLGEGINWORK;提交事务:EXECSQLCOMMITWORK;回滚事务:EXECSQLRALLBACKWORK;DB2中语法打开事务:自动打开提交事务:EXECSQLCOMMITWORK;(或EXECSQLCOMMIT;)回滚事务:EXECSQLRALLBACKWORK;(或EXECSQLRALLBACK;)游标操作游秘基本语法,游秘名字为mycursor定义游标:EXECSQLDECLA
7、REmycursorCURSORFORSELECT*FROMstaffWHEREid>=310;打开游标:EXECSQLOPENmycursor;Fetch游标:EXECSQLFETCHmycursorINTO:id,:name,:dept,:job:joblnd;关闭游标:EXECSQLCLOSEmycursor;释放游标:EXECSQLFREEmycursor;在IDS中游标需要释放,而在DB2屮游标不需要释放。IDS和DB2同时支持对游标所引用行进行更新和删除,即在查询语句后追加“forupdate”,同吋在“update”或
8、“delete”语句中条件力“wherecurrentofmycursor”,两者的使用是相同的。注:在db2中声明游标时,不会更新sqlcode,做执行此操作时不需要判断sqlcode,不然会产生不必要的错误。临时表操作在IDS中可
此文档下载收益归作者所有