Oracle数据库迁移到DB2数据库的技巧和注意点.doc

Oracle数据库迁移到DB2数据库的技巧和注意点.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle数据库迁移到DB2数据库的技巧和注意点

IBM 应用开发合作中心  PAGE 8/ NUMPAGES 8 Oracle2DB2的技巧和注意点 一、针对数据库: 在存储过程中见分区。 在建表时使用多纬索引,使用时就不必再建了。 insert into ... with t1 as (select ) , t2 as (select ) select .. from t1,t2 .. MTK无法自动转换,但DB2是支持此种写发的,需要手工在emdb.db2文件中修改。 重复定义,可能是大小写问题。 在使用mtk从数据库中抽取数据时,排除重复的对象。 ‘=’号两边类型必须一致. Union操作的前后的表里的字段取名必须一致. 外连接操作两边不能使用自定义函数. 多个表做cross join后,引用同一名字的字段前要加前缀。 修改emdb.src,在字段前加上表名。 定义一个package作为动态游标,返回结果集。 DB2中需要改写成定义一个返回结果集的存储过程,例如: CREATE PROCEDURE DB2ADMIN.RETURN_RESULTSET_PROC1 (inout inout_ret int ) DYNAMIC RESULT SETS 1 -- 在cursor中使用with语句,需要改写, -- 返回结果集 P1: BEGIN declare stmt varchar(1024); --declare cur_1 cursor for (with t1 as (select id,name from staff),t2 as (select id,name from staff) select t1.id, from t2 left join t1 on t1.id=t2.id); declare cur_1 cursor WITH RETURN TO CALLER for select t1.id from (select id,name from staff) as t2 left join (select id,name from staff) as t1 on t1.id=t2.id; open cur_1; END P1 CREATE PROCEDURE CALL_PROC_WITHR_ESULTSET_PROC1(INOUT total INT) LANGUAGE SQL -- 调用带返回结果集的存储过程 BEGIN DECLARE a, sqlcode INT DEFAULT 0; DECLARE LOC1 RESULT_SET_LOCATOR VARYING; SET total = 0; CALL RETURN_RESULTSET_PROC1(a); ASSOCIATE RESULT SET LOCATOR( LOC1) WITH PROCEDURE RETURN_RESULTSET_PROC1; ALLOCATE C1 CURSOR FOR RESULT SET LOC1; FETCH FROM C1 INTO a; WHILE sqlcode = 0 DO SET total = total + a; FETCH FROM C1 INTO a; END WHILE; END 6.存储过程中嵌套存储过程的申明。 DB2不支持在存储过程中申明临时的存储过程,只能单独申明。 7.使用DBMS_SQL函数创建一个带insert ... select ... 语句的游标,并能够计算插入的记录个数。 CREATE PROCEDURE DB2ADMIN.DYNCURSORPROC2 (in in_param varchar(100),out out_ret int ) --DYNAMIC RESULT SETS 1 -- 动态SQL存储过程 P1: BEGIN declare stmt varchar(1024); declare cur_1 cursor for s1; set stmt=(select id from staff where name=||in_param||); prepare s1 from stmt; open cur_1; fetch cur_1 into out_ret; close cur_1; END P1 CREATE PROCEDURE GETROWCOUNT (IN in_id SMALLINT) -- 获取更新的记录数 BEGIN DECLARE SQLSTATE CHAR(5); DECLARE rcount INTEGER;

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档