第十二步:游标 CURSOR 处理
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:CURSOR
修改点:
如果需要把 CURSOR 返回调用程序,不能关闭它
如果不需要把 CURSOR 返回调用程序,关闭它
DB2 中关闭CURSOR语句: CLOSE cursor-name,把DEALLOCATE CURSOR cursor-name 全局确认替换为 CLOSE cursor-name。
第十三步:update … set … from … 格式语句的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:update
修改点:
清单14 :update … set … from … 语法格式
|
清单15 :update … set … from … 格式语句的等价修改
|
注意:上述例子中必须为 T_1 指定别名 T_1_alias ,不能在后面的WHERE条件中使用‘T_1.C_1’。WHERE 条件的如何重写(拆分)需要根据业务逻辑具体确定。
第十四步:临时表的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:#
修改点:分两种情况:
情况1,利用 select 语句创建临时表
清单16:利用 select 语句创建临时表
|
情况2,利用 create 语句创建的临时表
清单17:利用 create 语句创建的临时表
|
注意:
1.所有引用临时表的地方,必须加上‘SESSION.’, 否则会使用当前的 SQLID
2.ON COMMIT DROP TABLE 表示在 COMMIT 的时候把临时表删除。
3. 要根据具体业务逻辑决定使用 CREATE GLOBAL TEMPORARY TABLE 还是 DECLARE GLOBAL TEMPORARY TABLE。
第十五步:ORDER BY 中带有函数运算问题
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:order by
修改点:
DB2 中 order by Y中不支持函数。例如 ‘order by sum(C_1) desc。根据具体业务逻辑进行等价修改。
第十六步:UNION 问题
方法:方法2,全局查找,逐个确认替换。
查找关键词:union
替换词:union all
修改点:
为提高性能(视具体应用程序),将 union 统一替换成 union all
清单18:UNION问题
|
第十七步:GROUP BY 中带有非聚合运算涉及的列
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:group by
修改点:
在 DB2 中,group by 中的列必须是聚集函数所涉及的, Sybase 中则不然。我们要根据具体业务逻辑进行等价修改。基本上可以直接去掉 group by 中多余的列。
清单19:GROUP BY 中带有非聚合运算涉及的列
|
最新相关文章
发表评论