SQLServer存储过程迁移到DB2的相关问题整理

本文主要介绍了从SQLServer存储过程迁移到DB2时遇到的问题及解决方案,包括TOP关键字的替换、位运算符的处理、临时表的创建和使用,以及常见错误的对应处理。此外,提供了自定义位运算函数的C代码示例和创建临时表的正确方法。
摘要由CSDN通过智能技术生成

 一,工具准备

    【IBM Migration Toolkit】 以及【使用方法

       这里没有总结IBM Migration Toolkit是如何使用和安装的,主要是把我在实际从SQLServer存储过程到DB2的转换所遇到的一些问题进行一下总结。

 

 二,问题整理

       1,TOP的问题

           由于SQLServer里可以使用TOP,指定结果集返回多少行记录,但是DB2里是没有TOP关键字的,所以在转换        过程中应该注意以下几点:

           ①,在转换之前应将MS存储过程里的所有TOP关键字删除,然后在利用MTK进行转换

           ②,用【row_number() over() 】修改转换后的SQL,参照以下例子:

           DECLARE cursor1 CURSOR WITH RETURN FOR
           SELECT TRACKING_NUM, CUSTOMER_NAME, DATA
           FROM(
                    SELECT TRACKING_NUM, CUSTOMER_NAME, DATA, row_number() over() as rown
                    FROM XYZ123.CUSTINFO
                    ORDER BY TRACKING_NUM ASC
                   ) t
           WHERE
rown <= N
           注意红色的部分,可以通过rown来控制返回的行数,当然N是个变量,在这里还说下,DB2还有另一种可以返回指定行数的方法,FETCH FIRST rownum ROWS ONLY,但问题就是这里的rownum在存储过程里不能用变量代替,所以不推荐使用,除非返回的行数是固定的。


       2,位运算符

          DB2本身不支持& |的位操作,但可以通过用户定义函数(User-Defined Function UDF)来实现位运算功能。

          参考资料:http://bytes.com/groups/ibm-db2/185311-poor-query-performance

                 在C:/Program Files/IBM/SQLLIB/samples/c目录下
                 新建udfbit.sqc文件
                 新建udfbit.clp文件
                 新建udfbit.def文件
                 代码参见附录/C_UDF_CODE

          打开DB2的Command窗口,执行以下命令

          -->DB2 Connect to  DB名  user 用户名 using 密码

          -->bldrtn udfbit
          打开DB2的Command编辑器,执行以下SQL

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值