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查詢分析器裡生成之。
歡迎大家閱讀《系統從oracle版本轉化為sqlserver版本_oracle》,跪求各位點評,若覺得好的話請收藏本文,by 搞代碼
微信 賞一包辣條吧~
支付寶 賞一聽可樂吧~