<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線(xiàn)詞典, 英語(yǔ)學(xué)習(xí), 在線(xiàn)翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統(tǒng)計(jì)

    留言簿(23)

    積分與排名

    優(yōu)秀學(xué)習(xí)網(wǎng)站

    友情連接

    閱讀排行榜

    評(píng)論排行榜

    sql server 2000移植到orcle的心得體會(huì)(轉(zhuǎn))

    移植過(guò)程:采用的 oracle 的移植工具 Migration WorkBenth

    移植注意事項(xiàng):

    1. 移植前要在 ODBC 中建立 DSN ,由于移植的是 sql server 2000 ,驅(qū)動(dòng)選 sql server

    2. oracle 實(shí)例中建立登陸用戶(hù),包括用戶(hù)名和密碼,并賦予權(quán)限( connect resource dba )。這在使用 WorkBenth 過(guò)程中是要填寫(xiě)的內(nèi)容。

    3. 移植過(guò)程分為獲取 sql server Model ,建立 oracle Model 和導(dǎo)入數(shù)據(jù)三部分。

    4. 移植后我們會(huì)發(fā)現(xiàn)在 oracle 實(shí)例中有兩個(gè)方案生成: omwb_emulation sa 。其中 omwb_emulation 可以不予理會(huì),它主要提供了弱游標(biāo),供 sa 方案中的存儲(chǔ)過(guò)程調(diào)用。對(duì)于方案 sa 我們會(huì)注意到幾點(diǎn):原來(lái) sql server 中的數(shù)據(jù),包括表,視圖,存儲(chǔ)過(guò)程,索引等都在這個(gè)方案中存放;原來(lái) sql server 表中的種子類(lèi)型數(shù)據(jù)在方案 sa 中被統(tǒng)一管理,放在“序列”中;

    原來(lái)的數(shù)據(jù)庫(kù)名稱(chēng) xihang_info 現(xiàn)在是方案 sa 中的表空間。

    移植后注意事項(xiàng):

    1. 因?yàn)閼?yīng)用程序使用的是 ODBC, 涉及到幾個(gè)連接字符 : dsn username password 。由于應(yīng)用程序中的連接字符串是 conn.Open("sczb","sczb","sczbpw") ,而現(xiàn)有的 schema sa ,連接失敗。現(xiàn)在有兩種方案:改連接字符串或從新建立一個(gè)方案 sczb 。這里我們采用了第二種方案,新建方案 sczb

    方法是:先新建用戶(hù) sczb, 密碼是 sczbpw, 權(quán)限是 connect resource dba ;然后將方案 sa 導(dǎo)入到方案 sczb 中(若是導(dǎo)入到另外機(jī)器上,方案 omwb_emulation 一并導(dǎo)出再導(dǎo)入)。

    2. sczb 中修改視圖和存儲(chǔ)過(guò)程。修改視圖只要把 sql 語(yǔ)句中的方案名 sa 刪除或改為即可。存儲(chǔ)過(guò)程需要修改的內(nèi)容比較多,具體見(jiàn)下:

    修改存儲(chǔ)過(guò)程:

    1. 修改臨時(shí)表

    SQL 的臨時(shí)表用 # ## 開(kāi)頭,使用完后自動(dòng)釋放, ORACLE 的臨時(shí)表則存在數(shù)據(jù)庫(kù)中,每個(gè)會(huì)話(huà)的數(shù)據(jù)都互不干涉。 語(yǔ)法分別為: CREATE TABLE #TEMP ID INT NAME VARCHAR 20 )) CREATE GLOBAL TEMPORARY TABLE TEMP ID INT NAME VARCHAR 20 ))

    2. IDENTITY 字段

    Oracle 不支持自增長(zhǎng)類(lèi)型,在向表中插入含有 IDENTITY 字段的記錄時(shí),要顯示聲明。例如:

    Insert into tbl values (序列名 .nextval, 字段 1 ,字段 2 ,。。。)。

    3. SQL ORACLE 的游標(biāo)
    SQL
    的游標(biāo)用 @@FETCH_STATUS 判斷是否還有數(shù)據(jù), ORACLE 的游標(biāo)用 %FOUND %NOTFOUND 來(lái)判斷游標(biāo)是否結(jié)束。

    4. 連接字符串:

    SQL 的字符串連接用 + 號(hào), ORACLE 字符串連接用 || ,單引號(hào)可以做轉(zhuǎn)義符。因?yàn)樵?/span> sql server

    number 類(lèi)型的“ + ”運(yùn)算也用到 ”+”, 因此在移植后 oracle 對(duì)于 number 類(lèi)型的“ + ”有時(shí)識(shí)別不出來(lái),而作為字符連接來(lái)處理。

    5. 游標(biāo)的名稱(chēng)在移植后會(huì)有重復(fù)。不允許。

    6. 日期類(lèi)型數(shù)據(jù)要注意

    其格式不同于 sql server 中的“ yyyy-mm-dd ”格式,而是“ dd-x -yyyy “格式。要用 to_char(?,’yyyy-mm-dd’) 處理成 sql server 一樣的格式。

    7. oracle 獲取 sql 語(yǔ)句所影響的行數(shù)時(shí),不像 sql server @@rowcount 直接獲取那么簡(jiǎn)單,要分以下三種情況。

    Oracle 中對(duì)于隱性游標(biāo),獲取行數(shù)的方法是通過(guò) SQL%rowcount 直接獲得。

    對(duì)于顯性游標(biāo)獲取行數(shù)通過(guò) cursor_name%rowcount 獲得,但有有以下 sql 語(yǔ)句:

    For index in cusor_name loop

    變量名: =cursor_name%rowcount;

    End loop;

    Fetch into 語(yǔ)句的話(huà), rowcount=1

    8. 獲得年,月,日在 oracle 中不支持 year (), month ()和 day ()函數(shù)。

    解決的方法是通過(guò) substr ()函數(shù)。例如獲取‘2000-01-10’的‘年’,可以通過(guò)substr(‘2000-01-10’,14)得到。

    9. oracle 不支持 case 語(yǔ)句。

    sql server 中語(yǔ)句:

    CASE WHEN (GROUPING(BM_Name2) = 1)THEN ' 合計(jì) ' ELSE ISNULL(BM_Name2,' 未知 ') END AS BM_Name2,

    oracle 改寫(xiě)為 decode 語(yǔ)句:

    decode(GROUPING(BM_Name2),1,' 合計(jì) ',nvl(BM_Name2,' 未知 ')) BM_Name2

    10. 左右連接問(wèn)題。

    sql server 的連接語(yǔ)句如:

    select a.id b.yueshj from jh_wh_xiangmu as a left join jh_lr_zongliang as b on a.id=b.xiangmid

    oracle 中應(yīng)改為:

    Select a.id, b.yueshj from jh_wh_xiangmu a, jh_lr_zongliang b where a.id=b.xiangmid(+);

    sql server 的連接語(yǔ)句如:

    select a.id b.yueshj from jh_wh_xiangmu as a left join jh_lr_zongliang as b on trim(a.id)=trim(b.xiangmid)

    oracle 中應(yīng)改為:

    Select a.id, b.yueshj from jh_wh_xiangmu a, jh_lr_zongliang b where trim(a.id)=trim(b.xiangmid(+))

    11 .改好的存儲(chǔ)過(guò)程,不能編譯通過(guò)就認(rèn)為 ok 了。編譯通過(guò)只能說(shuō)明在語(yǔ)法上沒(méi)有問(wèn)題了,要進(jìn)一步執(zhí)行看邏輯上是否還有問(wèn)題。在編譯時(shí)產(chǎn)生的錯(cuò)誤是 pl/sql 錯(cuò)誤,在執(zhí)行時(shí)的錯(cuò)誤是 ora 錯(cuò)誤。

    12. sql/plus worksheet 中執(zhí)行存儲(chǔ)過(guò)程的語(yǔ)句是: execute 存儲(chǔ)過(guò)程名(‘參數(shù) 1 ‘,’參數(shù) 2 ‘,。。)

    但在執(zhí)行返回多條記錄集的存儲(chǔ)過(guò)程,也就是參數(shù)中含有 RC1 IN OUT Omwb_emulation.globalPkg.RCT1 的存儲(chǔ)過(guò)程時(shí),執(zhí)行起來(lái)略有不同。在 sql plus 中執(zhí)行的語(yǔ)法如下:

    Sql var rc1 refcursor;

    Sql execute pro_name(‘ 參數(shù) 1 ‘,’參數(shù) 2 ‘,: rc1 ,。。 )

    Sql print rc1

    posted on 2007-01-25 11:40 都市淘沙者 閱讀(1462) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle/Mysql/Postgres/

    主站蜘蛛池模板: 真正全免费视频a毛片| 精品免费久久久久国产一区| 无码天堂亚洲国产AV| 亚洲成AV人片在线播放无码| 亚洲一区二区三区成人网站| 99久久国产免费-99久久国产免费| 国产精品入口麻豆免费观看| 成年女人视频网站免费m | 亚洲国产成人精品无码区花野真一 | 成年女人毛片免费播放人| 999zyz**站免费毛片| 免费在线观看黄网站| 有色视频在线观看免费高清在线直播 | 99re热精品视频国产免费| 久久精品乱子伦免费| 亚洲av不卡一区二区三区| 亚洲人成人77777网站不卡| 国产传媒在线观看视频免费观看| 成人久久免费网站| 中文字幕a∨在线乱码免费看 | 亚洲狠狠久久综合一区77777| 5555在线播放免费播放| 国产综合免费精品久久久| 亚洲精品无码国产| 一区二区三区免费精品视频| 成人免费福利视频| 国产成人免费A在线视频| 免费看黄福利app导航看一下黄色录像 | 真人做人试看60分钟免费视频| 粉色视频在线观看www免费| 亚洲影视一区二区| 亚洲国产精品无码久久SM| 国产免费私拍一区二区三区| 成人在线免费看片| 性xxxx视频免费播放直播| 人碰人碰人成人免费视频| 亚洲AV无码国产一区二区三区| 亚洲午夜精品一区二区公牛电影院 | 久久国产乱子伦精品免费强| 一级做a爰片久久毛片免费陪| 欧洲 亚洲 国产图片综合|