- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
将Informix ESQL/C应用程序迁移到DB2
本文档讲述数据库嵌入式SQL/C程序从ESQLC向过程中所进行的分析、过程
IDS与DB2嵌入式SQL差异性分析
基本语法EXEC SQL SELECT * FROM tab1 WHERE color = pred;
修改为:
EXEC SQL SELECT * FROM tab1 WHERE color = pred;
模糊查询
IDS同时支持关键字like和MATCHES,两个关键字对应的多个字符和单个字符的匹配分别为%、_和*、?。若使用MATCHES,则需要对字符*?进行转义。
IDS中对字符串进行截取或匹配支持使用关键字str[a,b],其中a为起始字符串下标(序号从1开始),b为要截取字符串的结束下标;这种使用方式需要修改为like(where条件中)和substr(str,n1,n2),其中参数str为要取的字段名,n1为起始字符串下标(序号从1开始), n2为需要截取字符串的个数,即n2=b-a+1。
将所有存在的 UNIQUE 关键字都替换成 DISTINCT 关键字。
高级SQL操作
数据库
IDS使用database cmbc;
使用database close;
DB2使用SQL CONNECT TO cmbc;
如果要使用特定的用户标识(name)和密码(pwd),则使用如下语句:
EXEC SQL CONNECT TO sample USER name USING pwd;
?断开数据库cmbc连接:
EXEC SQL CONNECT RESET;
故要将程序中以上三种方式修改为标准方式。
事务操作
中语法
打开事务;
提交事务;
回滚事务;
DB2中语法
打开事务
提交事务;(或EXEC SQL COMMIT;)
回滚事务;(或EXEC SQL RALLBACK;)
?
游标操作
游标基本语法
定义游标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:jobInd;
关闭游标EXEC SQL CLOSE mycursor;
释放游标EXEC SQL FREE mycursor;
在IDS中游标需要释放,而在DB2中游标不需要释放。IDS和DB2同时支持对游标所引用行进行更新和删除,即在查询语句后追加“for update”,同时在“update”或“delete”语句中条件为“where current of mycursor”,两者的使用是相同的。
注:在db2中声明游标时,不会更新sqlcode,做执行此操作时不需要判断sqlcode,不然会产生不必要的错误。
?
临时表操作Select * from eviaa into temp tmp_table with no log;
在DB2中不支持此种用法,需要先创建临时表:
EXEC SQL DECLARE GLOBAL TEMPORARY TABLE tmp_table LIKE eviaa WITH REPLACE not logged;
其中“like eviaa”为此临时表与eviaa相同,WITH REPLACE,为若此临时表存在,则覆盖, not logged :不进行日志
然后向临时表中插入数据,其语法为:
EXEC SQL INSERT INTO session. tmp_table
(Select * from eviaa);
其中临时表名前必须加“session.”。
系统表:systables
在informix 中系统表systables在DB2中对应的系统库表为sysibm.tables,如:
在informixk中:
select count(*) from systables where tabname=acan0
其中,tabname字段中存储的表名为小写。
DB2中与其对应的库表为 sysibm.tables,对应的字段表名tabname对应为TABLE_NAME
select count(*) from sysibm.tables where TABLE_NAME = ACAN0
db2中系统表sysibm.tables中字段tabname中存储字母均为大写,使用时需要注意。
主变量的数据类型
SQL类型 C数据类型 SQL类型描述 SMALLINT short
short int
sqlint16 16位带符号整数
原创力文档


文档评论(0)