- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
将InfrmiESQL应用程序迁移到B2.doc
将Informix ESQL/C应用程序迁移到DB2
本文档讲述数据库嵌入式SQL/C程序从ESQLC向DB2迁移过程屮所进行的分析、迁移 过程。
一、IDS与DB2嵌入式SQL差异性分析
本部分主要对IBM Informix Dynamic Server(简称为IDS)与DB2的嵌入式SQL基本语法、
SQL通信区和游标和高级操作几个方而进行分析,列!II其不同之处。
(一)基本语法
扩展名
IDS应用程序的扩展名为“.ec”,而DB2的扩展为“.sqc”,应将程序的扩展名修改为 “.sqc”。
SQL语句
SQL语句都必须加前缘EXEC SQL,以(;)结束成为一个程序片断:
EXEC SQL SQL 语句;
IDS和DB2都支持此种语法,且DB2仅支持此种语法,但IDS同时也支持将EXEC SQL换为字 符“$”,故要对程序巾的所有使用“$”的语句修改为EXEC SQL。
备注:
所有的SQL语句都是不区分人小写,包括EXECSQL,故不对SQL语句的大小进行分析。
主变量
按照 ANSI 标准主变量必须在 SQL 记?句 BEGIN DECLARE SECTION 勹 END DECLARE SECTION
之间进行定义,定义之后可以在SQL语句中使用,为了与数据库对象名(表名、视图名、 列名等)区别,SQL语句中的主变量名前要加冒号(:)作为标志。
IDS和DB2都支持此种语法,.ft DB2仅支持此种语法,侃IDS同时也支持声明主变量方式为:
$int a;
EXEC SQL int b;
但IDS同时也支持在SQL语句中使用“$”来替换(:),如:
EXEC SQL SELECT CUNM FROM EVIAA WHERE ACNO = $sACNO;
故要将程序中以上三种方式修改为标准方式。
字符串
IDS同时支持双引号和单引号字符串,但DB2只支持单引号字符串,则需要用单引号 字符串替换双引号字符串。
例如需要将
EXEC SQL SELECT * FROM tabl WHERE color = pred;
修改为:
EXEC SQL SELECT * FROM tabl WHERE color = pred1;
模糊查询
IDS同时支持关键字like和MATCHES,两个关键字对应的多个字符和单个字符的匹配分 别为%、_和*、?。若使用MATCHES,则需要对字符*?进行转义。
IDS屮对字符串进行截収或匹配支持使川关键字str[a,b],其屮a为起始字符串下标(序 号从1开始),b为要截取字符串的结束K标;这种使用方式耑要修改为like (where条件中) 和SUbStr(StGnl,n2,其中参数str为要取的字段名,nl为起始字符串下标(序号从1开始), n2为需要截取字符串的个数,即n2 = b-a+lo
将所有存在的UNIQUE关键字都替换成DISTINCT关键字。
(二)高级SQL操作
数据库连接
IDS使用如卜语句來建立数据痺(cmbc)连接:
EXEC SQL database cmbc;
使用如下语句来断开数据库连接:
EXEC SQL database close;
DB2使用如下语句來建立数据库(cmbc)连接 EXEC SQL CONNECT TO cmbc;
如果要使用特定的用户标识(name)和密码(pwd),则使用如下语句: EXEC SQL CONNECT TO sample USER name USING pwd;
断开数据库cmbc连接:
EXEC SQL CONNECT RESET;
故要将程序中以上三种方式修改为标准方式。
事务操作
IDS中语法
打开事务:EXEC SQL GEGIN WORK;
提交事务:EXEC SQL COMMIT WORK;
回滚事务:EXEC SQL RALLBACK WORK;
DB2中语法
打开事务:自动打开
提交事务:EXEC SQL COMMIT WORK;(或 EXEC SQL COMMIT;) 回滚事务:EXEC SQL RALLBACK WORK;(或 EXEC SQL RALLBACK;)
游标操作
游秘基本语法,游秘名字为mycursor
定义游标:
EXEC SQL DECLARE mycursor CURSOR FOR SELECT * FROM staff WHERE id = 310;
打开游标:
EXEC SQL OPEN mycursor;
Fetch游标:
EXEC SQL FETCH mycursor INTO :id,:name,:dept,:job:joblnd;
关闭游标:
EXEC SQL CLOSE mycursor;
释放游标:
EXEC SQL FREE mycursor;
在IDS中游标需
文档评论(0)