首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 預存程序轉 SQL Server 完整替換規則清單

     編輯:Oracle 資料庫相關知識

大批量遷移 Oracle 預存程序至 SQL Server 時,可先用編輯器執行下列 正則/字串替換,再人工微調,可節省 80% 以上機械轉換工時。

#Oracle 寫法SQL Server 寫法備註
1CREATE OR REPLACE PROCEDURECREATE PROCEDURE移除 OR REPLACE
2變數 user_id@user_id所有變數加 @ 前綴
3ISAS並將 BEGIN 上移至 AS 直後
4CURSOR cur_a IS ...DECLARE cur_a CURSOR LOCAL FOR ...游標宣告語法差異
5FETCH cur_a INTO ...FETCH NEXT FROM cur_a INTO ...需加 NEXT
6IF (cur_a%NOTFOUND) THENIF (@@FETCH_STATUS <> 0) BEGIN狀態檢查方式不同
7IF (cur_a%FOUND) THENIF (@@FETCH_STATUS = 0) BEGIN
8; (陳述式結束) (空格/換行)TSQL 不以分號結束,但建議保留分號作風格
9:==指派運算子,並手動補上 SET
10THENBEGINIF ... THEN → IF ... BEGIN
11END IF;END
12 IN (參數模式) (移除)TSQL 參數預設輸入,無 IN 關鍵字
13NVL(a,b)ISNULL(a,b)
14SYSDATEGETDATE()
15VARCHAR2VARCHAR需手動補長度,如 VARCHAR(100)
16ELSIFELSE IF
17|| (字串連接)+

人工必檢項目

  • 例外處理:Oracle EXCEPTION WHEN ... → SQL Server TRY...CATCH 結構差異大,需重寫。
  • 套件/集合型別:DBMS_SQL、TABLE OF ...、%ROWTYPE 等無對應物件,需改用暫存表或 Table-Valued Parameter。
  • 動態 SQL:EXECUTE IMMEDIATE → sp_executesql,參數綁定語法不同。
  • 日期運算:SYSDATE + 1 → DATEADD(DAY, 1, GETDATE())。
  • 序列:SEQ.NEXTVAL → IDENTITY 或 SEQUENCE (2012+)。

工具建議:使用 SQLines、AWS SCT 或 SSMA for Oracle 輔助轉換,再套用上表規則做二次清洗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved