waterxp 从oracle版本转化为sqlserver版本
1,系统安排
为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层。现决定如下:
a,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录:
sql 和ora。这两个目录有三个文件:
common.pbl ,water_modi.pbl,dw_version.pbl。
这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。
b,不同的数据库将使用不同的目录。
2,系统环境的建立
每台机器上建立下面的磁盘映射:
p 指向 \\oraservr\p237
v 指向 \\oraservr ql237 或者是 \\oraserver\ora237
源代码在 \\oraserver\code\water237 ource 里面。
p盘是肯定要有的, v盘由使用什么版本决定。
3,源代码的修改
业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。
p盘是类库可以不需要修改。
v盘里的数据窗口都需要改。
改sql237里面的数据窗口,要修改和要注意的地方:
替换的方法
oracle里面使用 sql server 里面使用
to_char(readingdate,’yyyymm’) convert(char(6),readingdate,111)
to_char(readingdate,’yyyy/mm’) convert(char(7),readingdate,112)
decode( , , , ,) case when then end 或者 isnull(x,0)
左右连接 (+) left outer join
修改过程中要注意数据窗口的update属性。
4,工作计划
4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。
4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode() ,或者是to_char(),这些语法在sqlserver也是必须代替的。
修改方法:
if gs_database = ‘oracle’ then
………………decode()……………;
else
…………………case when then end ………..;
end if
4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。
4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器