WEB开发网
开发学院数据库Oracle 从SQL SERVER 向ORACLE 8迁移的技术实现方案 阅读

从SQL SERVER 向ORACLE 8迁移的技术实现方案

 2008-09-08 12:52:59 来源:WEB开发网   
核心提示: <3>、从SQL SERVER向ORACLE的迁移方案比较上述SQL代码,在迁移过程中要做如下调整:(1)T-SQL对CURSOR的声明在主体代码中,从SQL SERVER 向ORACLE 8迁移的技术实现方案(10),而PL/SQL中对CURSOR的声明与变量声明同步,都要在

<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
..

上一页  5 6 7 8 9 10 

Tags:SQL SERVER ORACLE

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接