从SQL SERVER 向ORACLE 8迁移的技术实现方案
2008-09-08 12:52:59 来源:WEB开发网<3>、从SQL SERVER向ORACLE的迁移方案
比较上述SQL代码,在迁移过程中要做如下调整:
(1)T-SQL对CURSOR的声明在主体代码中,而PL/SQL中对CURSOR的声明与变
量声明同步,都要在主体代码(BEGIN关键字)之前声明,所以在迁移时要
将游标声明提前,MSSQL SERVER的Cursor定义后的参数省去;
(2)对CUOSOR操作的语法中PL/SQL没有T-SQL里DEALLOCATE CURSOR这一部分,
迁移时要将该部分语句删除。
(3)PL/SQL 与T-SQL对游标中的循环与循环终止条件判断的处理不太一样,根
据前面的讨论并参考后面对两种语法集进行控制语句对比分析部分的叙述,
建议将T-SQL中的游标提取循环调整为PL/SQL中的WHILE游标提取循环结
构,这样可保持循环的基本结构大致不变,同时在进行循环终止条件判断时
要注意将T-SQL中的对@@FETCH_STATUS全局变量的判断调整为对
CURSOR_NAME%FOUND语句进行判断。
(4)对于T-SQL,没有定义语句结束标志,而PL/SQL用“;”结束语句。
(5)对于原MSSQL SERVER类型的游标,如果游标取出的值没有参与运算的,全部采用FOR循环方式来替换;而对于取出的值还要进行其它运算的,可以采用直接在定义变量位置定义变量。
(6)MSSQL中对于同一游标重复定义几次的情况在ORACLE中可通过游标变量来解决.如下:
MSSQL SERVER 中:
Declare cur_ypdm cursor for
Select * from yp
Open cur_yp
Fetch cur_yp into @yp,@mc …
While @@fetch_status <> -1
Begin
If @@fetch_status <> -2
Begin
….
End
Fetch cur_yp into @yp,@mc …
End
Close cur_ypdm
Deallocate cur_ypdm
..
Declare cur_ypdm cursor for
Select * from yp where condition 1
Open cur_yp
Fetch cur_yp into @yp,@mc …
While @@fetch_status <> -1
Begin
If @@fetch_status <> -2
Begin
….
End
Fetch cur_yp into @yp,@mc …
End
Close cur_ypdm
Deallocate cur_ypdm
..
Declare cur_ypdm cursor for
Select * from yp where condition 2
Open cur_yp
Fetch cur_yp into @yp,@mc …
While @@fetch_status <> -1
Begin
If @@fetch_status <> -2
Begin
….
End
Fetch cur_yp into @yp,@mc …
End
Close cur_ypdm
Deallocate cur_ypdm
..
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
更多精彩
赞助商链接