Oracle学习 第19天 SqlServer数据迁移Oracle 存储过程

  

这次是远程到公司服务器上测试,把Oracle Sql Developer和JTDS复制上去执行,都是绿色版直接运行就可以。

迁移速度更快了,昨晚是连VPN,现在直接在服务器上迁移,一下就迁移完了。

刚才批量把存储过程的加密语句去掉了(即删除WITH ENCRYPTION),看下存储过程的移植

1、存储过程不是很令人满意,21个存储过程无法转换,9个存储过程转换成功,只有3个未报错,6个编译未通过,需要手动调整。

2、转换时变量和参数会自动加上前缀,找了一下可以设置

不知那个【标识列】是什么意思,是否自增?没勾上也是有触发器和序列啊

【本机联接增强】也不知什么意思,是否Sql和Oracle在同一台服务器上时能提高效率?

3、转换的存储过程格式化还可以,挺整齐,就是一个非常不好,原先存储过程里有个参数Action,就像switch效果一样,根据传进来的参数执行相应脚本。本来SqlServer格式是:

IF @Action = 'XX'

BEGIN

  XXX

END

ELSE IF @Action = 'XXX'

BEGIN

  XXXX

END

现在转成Oracle后,变成

IF v_Action = 'XX' THEN

BEGIN

  XXX

END

ELSE

  IF v_Action = 'XX' THEN

  BEGIN

    XXX

  END

  END IF;

END IF;

转换器使用了ELSE再加IF,而不是ELSIF,这样就造成不断地缩进,本来是平行的结构,变成了缩进分级的结构。

还找不到地方设置让转换器选择ELSIF的规则。

4、很多存储过程里面是拼字符串来执行的,这部份肯定Oracle是没法自动转换的(因为是字符串,转换器肯定不会去把字符串当语法来解析),字符串里面需要手动调整。

5、SqlServer的sp_executesql不能识别及转换

这样看来,迁移最大问题还是存储过程。

建表/改表脚本虽然也需要转换,但迁移后直接在PL/SQL里生成Oracle的建表脚本就好了,不用管改表脚本了。

函数转换都没问题,都是比较简单的函数,一些转换数字/金额之类的

原文地址:https://www.cnblogs.com/liuyouying/p/6367225.html