<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国产成人免费视频| 免费在线视频你懂的| 亚洲丝袜美腿视频| 成人免费视频试看120秒| 黄色免费网址大全| 精品亚洲成a人片在线观看| 啦啦啦在线免费视频| GOGOGO高清免费看韩国| 亚洲国产成人精品无码一区二区 | 国产免费69成人精品视频| 中文成人久久久久影院免费观看| 亚洲一区二区三区精品视频| 亚洲精品国自产拍在线观看| 精品国产无限资源免费观看| 久久精品无码专区免费| 亚洲中文字幕乱码AV波多JI| 亚洲色WWW成人永久网址| 成人毛片免费观看视频在线 | 亚洲另类无码专区首页| 永久亚洲成a人片777777| 在线v片免费观看视频| 亚洲人成网亚洲欧洲无码久久| 国产精品亚洲专区无码牛牛| 亚洲熟妇无码一区二区三区导航 | 久久国产精品免费观看| 综合偷自拍亚洲乱中文字幕| 亚洲视频中文字幕在线| 中文字幕一精品亚洲无线一区| 在线观看免费宅男视频| 99精品免费观看| 丁香花在线观看免费观看图片| 一本色道久久综合亚洲精品蜜桃冫| 亚洲成av人影院| 亚洲成A人片77777国产| 成人免费福利电影| 亚洲免费二区三区| 久久久免费的精品| 久青草视频97国内免费影视| 日本一区二区三区在线视频观看免费 | 久久久久国产精品免费免费不卡 | 国产黄在线观看免费观看不卡|