|
ak47cs 发表于 2011-12-30 14:41 ![]()
无缝迁移有点夸大其词了吧,我在迁移的时候遇到了几个问题,写出来大家帮我解决一下。
视图创建的时候orde ...
从DB2 V9.7开始,DB2的Oracle兼容特性对Oracle的数据类型、SQL语法和PL/SQL的支持,确实为迁移Oracle数据库带来了很大方便。当然,这种兼容不是100%,官方的数据是99%。
1. 是的,比如在DB2中需要"create view emp800 as select * from (select name, bonus from employee order by bonus)"。对于这个问题,其实从view理论上的定义看,视图与表一样也是一种关系,也是说它里面的数据行是一个集合,当然无序。Oracle在8.1以前也是不支持create view order by。但是由于create view由full select语句定义,而一些程序员会用order by视图来简化最终SQL查询的书写,Oracle从实用的角度出发于是从8.1开始支持了这种语法。而IBM而一直秉承标准与理论基础,不愿改变。扯得太多了。
2. sys_guid,在DB2中试一试generate_unique() 生成13 bytes的raw data全局唯一标识。
3. dbms.lob: oracle为dbms_lob.read(vlob, buffer_size, offset, buffer);
在DB2中确实稍有区别,对CLOB和BLOB区别对待:
READ_BLOB(--lob_loc--,--amount--,--offset--,--buffer--);
READ_CLOB--(--lob_loc--,--amount--,--offset--,--buffer--)
4. 对于Oracle的raw(n),对应到DB2为 char(n) for bit data, n < =254
varchar(n) for bit data, n < =32672
BLOB(n), n<2G
可以从这三种类型中根据实际需要选择一种。当然你直接用BLOB也可以,但对短数据不一定合适。
|
|