專案設定 (轉換) (OracleToSQL)
[專案設定] 對話方塊的 [轉換] 頁面包含自訂 SSMA 如何將 Oracle 語法轉換成 SQL Server 語法的設定。
[轉換] 窗格可在 [專案設定] 和 [預設專案設定] 對話方塊中找到:
若要指定所有 SSMA 專案的設定,請在 [工具] 功能表上按一下 [預設專案設定],從 [移轉目標版本] 下拉式清單中選取需要檢視或變更其設定的移轉專案類型,接著按一下左窗格底部的 [一般],然後按一下 [轉換]。
若要指定目前專案的設定,請在 [工具] 功能表上按一下 [專案設定],接著按一下左窗格底部的 [一般],然後按一下 [轉換]。
內建函式和提供的套件
詞彙 | 定義 |
---|---|
將 COUNT 函式轉換為 COUNT_BIG | 如果您的 COUNT 函式可能傳回大於 2,2,147,483,647 的值,也就是 231-1,您應該將函式轉換成 COUNT_BIG 。如果您選取 [是],SSMA 會將所有使用的 COUNT 都轉換為 COUNT_BIG 。如果您選取 [否],函式會維持為 COUNT 。 如果函式傳回大於 231-1 的值,SQL Server 會傳回錯誤。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/完整模式:是 開放式模式:否 |
將 SUBSTR 函式呼叫轉換為 SUBSTRING 函式呼叫 | SSMA 可以根據參數數目,將 Oracle SUBSTR 函式呼叫轉換成 SQL Server substring 函式呼叫。 如果 SSMA 無法轉換 SUBSTR 函式呼叫,或不支援參數數目,SSMA 會將 SUBSTR 函式呼叫轉換成自訂 SSMA 函式呼叫。如果您選取 [是],SSMA 會將使用三個參數的 SUBSTR 函式呼叫轉換成 SQL Server substring 。 其他 SUBSTR 函式會轉換成自訂 SSMA 函式呼叫。如果您選取 [否],SSMA 會將 SUBSTR 函式呼叫轉換成自訂 SSMA 函式呼叫。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:是 完整模式:否 |
轉換 TO_CHAR(date, format) 函式呼叫 | SSMA 可以將 Oracle TO_CHAR(date, format) 轉換成 ssma_oracle 結構描述中的程序。如果您選取 [使用 TO_CHAR_DATE 函式],SSMA 會使用英文語言進行轉換,將 TO_CHAR(date, format) 轉換成 TO_CHAR_DATE 函式。如果您選取 [使用 TO_CHAR_DATE_LS 函式 (NLS 處理)],SSMA 會使用工作階段語言進行轉換,將 TO_CHAR(date, format) 轉換成 TO_CHAR_DATE_LS 函式當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:使用 TO_CHAR_DATE 函式 完整模式:使用 TO_CHAR_DATE_LS 函式 (NLS 處理) |
產生 DBMS_SQL.PARSE 的錯誤 | 如果您選取 [錯誤],SSMA 會在轉換 DBMS_SQL.PARSE 時產生錯誤。如果您選取 [錯誤],SSMA 會在轉換 DBMS_SQL.PARSE 時產生錯誤。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:錯誤 |
在 CONCAT 函式呼叫中使用 ISNULL | ISNULL 陳述式用於 CONCAT 函式呼叫中模擬 Oracle 行為。 此設定提供下列選項:YES 否 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:否 完整模式::是 |
在 REPLACE 函式呼叫中使用 ISNULL | ISNULL 陳述式用於 REPLACE 函式呼叫中模擬 Oracle 行為。 此設定提供下列選項:YES 否 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:否 完整模式::是 |
盡可能使用原生轉換函式 | 如果您選取 [是],SSMA 會盡可能將 TO_CHAR(date, format) 轉換成原生轉換函式。如果您選取 [否],SSMA 會將 TO_CHAR(date, format) 轉換成 TO_CHAR_DATE 或 TO_CHAR_DATE_LS (它是由 [轉換 TO_CHAR(date, format)] 選項所定義)。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:是 完整模式:否 |
轉換訊息
詞彙 | 定義 |
---|---|
產生問題相關訊息 | 指定 SSMA 是否會在轉換期間產生參考性訊息、在 [輸出] 窗格中顯示訊息,並新增至已轉換的程式碼。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:否 完整模式:否 |
其他選項
詞彙 | 定義 |
---|---|
將 ROWNUM 運算式轉換成整數 | SSMA 轉換 ROWNUM 運算式時,會將運算式轉換成 TOP 子句,後面接著運算式。 下列範例顯示 Oracle DELETE 陳述式中的 ROWNUM :DELETE FROM Table1 WHERE ROWNUM < expression and Field1 >= 2 下列範例顯示產生的 Transact-SQL: DELETE TOP (expression-1) FROM Table1 WHERE Field1>=2 TOP 要求 TOP 子句運算式評估為整數。 如果整數為負數,陳述式會產生錯誤。如果您選取 [是],SSMA 會將運算式轉換成整數。 如果您選取 [否],SSMA 會將所有非整數運算式標示為已轉換程式碼中的錯誤。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/完整模式:否 開放式模式:是 |
預設結構描述對應 | 此設定會指定 Oracle 結構描述如何對應至 SQL Server 結構描述。 此設定提供兩個選項: 結構描述對資料庫:在此模式中,Oracle 結構描述 sch1 預設會對應至 SQL Server 資料庫 sch1 中的 dbo SQL Server 結構描述。結構描述對結構描述:在此模式中,Oracle 結構描述 sch1 預設會對應至連線對話方塊中提供的預設 SQL Server 資料庫的 sch1 SQL Server 結構描述。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:結構描述對資料庫 |
在 ORDER BY 子句中模擬 Oracle Null 行為 | NULL 值在 SQL Server 和 DB2 中會以不同的方式排序:在 SQL Server 中, NULL 值是排序清單中的最小值。 在遞增清單中,NULL 值會先出現。在 Oracle 中, NULL 值是排序清單中的最大值。 根據預設,NULL 值最後會出現在遞增順序清單中。Oracle 有 NULLS FIRST 和 NULLS LAST 子句,可讓您變更 Oracle 排序 NULL 的方式。SSMA 可藉由檢查 ORDER BY 值來模擬 Oracle NULL 行為。 然後它會依指定的順序依 NULL 值排序,然後依其他值排序。如果您選取 [是],SSMA 會以模擬 Oracle ORDER BY 行為的方式轉換 Oracle 陳述式。如果您選取 [否],SSMA 將會忽略 Oracle 規則,並在遇到 NULLS FIRST 和 NULLS LAST 子句時產生錯誤訊息。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:否 完整模式::是 |
在 SELECT 中模擬資料列計數例外狀況 | 如果具有 INTO 子句的 SELECT 陳述式未傳回任何資料列,Oracle 就會引發 NO_DATA_FOUND 例外狀況。 如果陳述式傳回兩個或多個資料列,則會引發 TOO_MANY_ROWS 例外狀況。 如果資料列計數非一,SQL Server 中的轉換陳述式不會引發任何例外狀況。如果您選取 [是],SSMA 會在每個 db_error_exact_one_row_check 陳述式之後新增對特殊 SELECT 程序的呼叫。 此程序會模擬 NO_DATA_FOUND 和 TOO_MANY_ROWS 例外狀況。 這是預設值,可盡可能接近重現 Oracle 行為。 如果原始程式碼具有負責處理這類錯誤的例外處理常式,您應該一律選擇 [是]。 請注意,如果 SELECT 陳述式發生在使用者定義函式內,此模組會轉換成預存程序,因為執行預存程序並引發例外狀況與 SQL Server 函式內容不相容。如果您選取 [否],系統將不會產生例外狀況。 當 SSMA 轉換使用者定義函式,而且您想要維持 SQL Server 中的函式時,這可能會相當實用 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
啟用修正建議程式 | 啟用時,SSMA 會嘗試從您在目標 T-SQL 程式碼中所做的修改中學習,並在可套用類似模式的其他位置建議潛在的程式碼修正。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
產生常數運算式資料行別名 | 如果 SELECT 清單中的運算式遺漏別名,SSMA 可以產生常數別名 (例如 expr1 、expr2 等等) 或使用運算式本身作為別名。 由於運算式可能變得相當長,而且資料行名稱長度有限,因此使用這類別名的常數基底名稱比較安全。 雖然這是更安全的選項,但有時不可能,因為產生的資料集可能會有外部相依性。 在這些情況下,您可能想要根據資料行的值運算式來命名資料行,類似於 Oracle 的行為。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:是 完整模式:否 |
省略擴充屬性 | 啟用時,SSMA 不會將擴充屬性新增至其在目標資料庫中建立的物件。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:否 |
轉譯錯誤碼 | 啟用時,如果找到對應,目標 SQL Server 端的錯誤號碼將會轉譯為 Oracle 錯誤碼。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/完整模式:是 開放式模式:否 |
針對類型參考使用完整類型規格 | 啟用時,SSMA 會遵守常式參數的完整類型規格 (包括小數位數和精確度) 和傳回值。 Oracle 不允許常式參數的資料類型引數,但在某些情況下可隱含衍生,例如使用 %TYPE 和 %ROWTYPE 屬性時。 在這類情況下,SSMA 在將其轉換 SQL Server 時,可使用完整類型規格 (包括精確度和小數位數)。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:是 完整模式:否 |
在字串串連中使用 ISNULL | 字串串連包含 NULL 值時,Oracle 和SQL Server 會傳回不同的結果。 Oracle 會將 NULL 值視為空字元集。 SQL Server 會傳回 NULL 。如果您選取 [是],SSMA 會以 SQL Server 串連字元 (+) 取代 Oracle 串連字元 (||)。 SSMA 也會檢查串連兩端的運算式是否有 NULL 值。如果您選取 [否],SSMA 會取代串連字元,但不會檢查 NULL 值。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
物件轉換
詞彙 | 定義 |
---|---|
在 NOT Null 的資料行上,使用 SET Null 參考動作轉換外部索引鍵 | Oracle 允許建立外部索引鍵條件約束,因為參考的資料行中不允許 Null 動作,因此無法執行 SET NULL 動作。 SQL Server 不允許這類外部索引鍵設定。如果您選取 [是],SSMA 將會產生 Oracle 中的參考動作,但您必須在載入條件約束以 SQL Server 之前進行手動變更。 例如,您可選擇 NO ACTION ,而不是 SET NULL 。如果您選取 [否],條件約束將會標示為錯誤。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:否 |
轉換子類型 | SSMA 可透過兩種方式轉換 PL/SQL 子類型: 如果您選取 [是],SSMA 會從子類型建立 SQL Server 使用者定義類型,並用於這個子類型的每個變數。 如果您選取 [否],SSMA 會將子類型的所有來源宣告取代為基礎類型,並如往常轉換結果。 在此情況下,不會在 SQL Server 中建立其他類型 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:否 |
轉換同義字 | 下列 Oracle 物件的同義字可以移轉至 SQL Server: 資料表和物件資料表 檢視和物件檢視 預存程序和函式 具體化檢視 下列 物件的同義字可以用物件的直接參考取代: 序列 套件 Java 類別結構描述物件 使用者定義的物件類型 其他同義字無法移轉。 SSMA 會產生同義字的錯誤訊息,以及使用同義字的所有參考。 如果您選取 [是],SSMA 會根據前一個清單建立 SQL Server 同義字和直接物件參考。 如果您選取 [否],SSMA 會針對此處所列的所有同義字建立直接物件參考。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
本機模組轉換 | 定義 Oracle 巢狀副程式 (獨立預存程序或函式中所宣告) 轉換的類型。 如果您選取 [內嵌],巢狀副程式呼叫將會由其主體取代。 如果您選取 [預存程序],巢狀副程式將會轉換成 SQL Server 預存程序,而且會在此程序呼叫上取代其呼叫。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:內嵌 |
記錄轉換
詞彙 | 定義 |
---|---|
將記錄轉換成個別變數的清單 | SSMA 可以將 Oracle 記錄轉換成不同的變數,以及轉換成具有特定結構的 XML 變數。 如果您選取 [是],SSMA 會盡可能將記錄轉換成個別變數的清單。 如果您選取 [否],SSMA 會將記錄轉換成具有特定結構的 XML 變數。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
針對記錄變數轉換 SELECT...INTO 時使用 SELECT...FOR XML | 指定選取記錄變數時,是否要產生 XML 結果集。 如果您選取 [是],SELECT 陳述式會傳回 XML。 如果您選取 [否],SELECT 陳述式會傳回結果集。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:否 |
RETURNING 子句轉換
詞彙 | 定義 |
---|---|
將 DELETE 陳述式中的 RETURNING 子句轉換為 OUTPUT | Oracle 提供 RETURNING 子句作為立即取得已刪除值的方法。 SQL Server 是透過 OUTPUT 子句提供此功能。如果您選取 [是],SSMA 會將 DELETE 陳述式中的 RETURNING 子句轉換成 OUTPUT 子句。 因為資料表上的觸發程序可以變更值,所以 SQL Server 傳回的值可能與 Oracle 不同。如果您選取 [否],SSMA 會在 DELETE 陳述式之前產生 SELECT 陳述式,以擷取傳回的值。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
將 INSERT 陳述式中的 RETURNING 子句轉換為 OUTPUT | Oracle 提供 RETURNING 子句作為立即取得插入值的方法。 SQL Server 是透過 OUTPUT 子句提供此功能。如果您選取 [是],SSMA 會將 INSERT 陳述式中的 RETURNING 子句轉換為 OUTPUT 。 因為資料表上的觸發程序可以變更值,所以 SQL Server 傳回的值可能與 Oracle 不同。如果您選取 [否],SSMA 會插入並選取參考資料表中的值,以模擬 Oracle 功能。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
將 UPDATE 陳述式中的 RETURNING 子句轉換為 OUTPUT | Oracle 提供 RETURNING 子句作為立即取得更新值的方法。 SQL Server 是透過 OUTPUT 子句提供此功能。如果您選取 [是],SSMA 會將 UPDATE 陳述式中的 RETURNING 子句轉換成 OUTPUT 子句。 因為資料表上的觸發程序可以變更值,所以 SQL Server 傳回的值可能與 Oracle 不同。如果您選取 [否],SSMA 會在 UPDATE 陳述式之後產生 SELECT 陳述式,以擷取傳回的值。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
ROWID 產生
詞彙 | 定義 |
---|---|
產生 ROWID 資料行 | SSMA 在 SQL Server 中建立資料表時,可以建立 ROWID 資料行。 移轉資料時,每個資料列都會取得 newid() 函式所產生的新 UNIQUEIDENTIFIER 值。如果您選取 [是],則會在所有資料表上建立 ROWID 資料行,且 SQL Server 在您插入值時產生 GUID。 如果您打算使用 SSMA 測試工具,請一律選擇 [是]。如果您選取 [否],就不會將 ROWID 資料行新增至資料表。 為具有觸發程序的資料表新增 ROWID 資料行,為包含觸發程序的資料表新增 ROWID。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:為具有觸發程序的資料表新增 ROWID 資料行 完整模式::是 |
在 ROWID 資料行上產生唯一索引 | 指定 SSMA 是否在 ROWID 產生的資料行上產生唯一的索引資料行。 如果選項設定為 [是],就會產生唯一索引,而如果設為「否」,則不會在 ROWID 資料行上產生唯一索引。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
序列和識別轉換
詞彙 | 定義 |
---|---|
將識別轉換為 | Oracle 提供識別資料行的多個組態選項。 SQL Server中的識別功能不支援其中一些選項。 保留這些選項的方法就是將識別轉換成序列。 如果您選取 [序列],Oracle 識別資料行將不再轉換成 SQL 識別資料行。 相反地,將會建立序列並用於產生資料行的預設值。 如果您選取 [識別],Oracle 識別資料行將會轉換成 SQL 識別資料行。 不會轉換不支援的選項。 如果您選取 [最適合],SSMA 會根據 Oracle 識別資料行的設定,判斷最適合的轉換方法 (識別或序列)。 |
轉換序列產生器 | 在 Oracle 中,您可以使用序列來產生唯一識別碼。 SSMA 可以將序列轉換成下列項目。 使用 SQL Server 序列產生器。 使用 SSMA 序列產生器。 使用資料行識別。 預設選項是使用 SQL Server 序列產生器。 不過,SQL Server 不支援取得目前的序列值 (例如 Oracle 序列 CURRVAL 方法)。 如需移轉 Oracle 序列 CURRVAL 方法的指引,請參閱 SSMA 團隊部落格網站。SSMA 也提供將 Oracle 序列轉換成 SSMA 序列模擬器的選項。 當您轉換成 SQL Server 2012 之前的版本時,這是預設選項 最後,您也可以將指派給資料表中資料行的序列轉換成 SQL Server 識別值。 您必須在 Oracle [資料表] 索引標籤上指定序列與識別欄位之間的對應 |
轉換 CURRVAL 外部觸發程序 | 只有在 [轉換序列產生器] 設定為 [使用資料行識別] 時,才會顯示此項。 因為 Oracle 序列是獨立於資料表的物件,所以許多使用序列的資料表都會使用觸發程序,以產生並插入新的序列值。 SSMA 會將這些陳述式設為註解,或在設為註解會產生錯誤時將它們標示為錯誤。 如果您選取 [是],SSMA 會標示已轉換序列 CURRVAL 上所有外部觸發程序的參考,並顯示警告。如果您選取 [否],SSMA 會標示已轉換序列 CURRVAL 上所有外部觸發程序的參考並出現錯誤。 |
陳述式轉換
詞彙 | 定義 |
---|---|
MERGE 陳述式的轉換 | 如果您選取 [使用 INSERT、UPDATE、DELETE 陳述式],SSMA 會將 MERGE 陳述式轉換成 INSERT 、UPDATE 、DELETE 陳述式。如果您選取 [使用 MERGE 陳述式],SSMA 會將 MERGE 陳述式轉換成 SQL Server 中的 MERGE 陳述式。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:使用 MERGE 陳述式 |
將呼叫轉換為使用預設引數的副程式 | SQL Server 函式不支援在函式呼叫中省略參數。 此外,SQL Server 函式和程序不支援運算式做為預設參數值。 如果您選取 [是] 且函式呼叫省略了參數,SSMA 會將關鍵字 default 插入函式中,並在正確的位置呼叫。 然後會以警告標示呼叫。 如果您選取 [否],SSMA 會將函式呼叫標示為錯誤。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
將 FORALL 陳述式轉換為 WHILE 陳述式 | 定義 SSMA 如何處理 PL/SQL 集合元素上的 FORALL 迴圈。如果您選取 [是],SSMA 會建立 WHILE 迴圈,系統會逐一擷取其中的集合元素。如果您選取 [否],SSMA 會使用 nodes() 方法從集合產生資料列集,並將它當做單一資料表使用。 這更有效率,但讓輸出程式碼更不容易閱讀。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式模式:否 完整模式::是 |
將函式呼叫轉換為程序呼叫 | 某些 Oracle 函式會定義為自發交易,或是包含在 SQL Server 中無效的陳述式。 在這些情況下,SSMA 會建立一個程序和一個函式 (該程序的包裝函式)。 轉換的函式會呼叫實作程序。 SSMA 可以將包裝函式呼叫轉換為程序呼叫。 這會建立更容易閱讀的程式碼,且可改善效能。 不過,情境不一定允許這麼做;例如,您無法將 SELECT 清單中的函式呼叫取代為程序呼叫。 SSMA 有幾個選項可涵蓋常見案例:如果您選取 [永遠],SSMA 會嘗試將包裝函式函式呼叫轉換成程序呼叫。 如果目前的情境不允許此轉換,就會產生錯誤訊息。 如此一來,產生的程式碼中就不會留下任何函式呼叫。 如果您選取 [可能的話],SSMA 只有在函式具有輸出參數時,才會移至程序呼叫。 無法移動時,便會移除參數的輸出屬性。 在其他所有情況下,SSMA 都會離開函式呼叫。 如果您選取 [永不],SSMA 會將所有函式呼叫保留為原樣。 有時候因為效能原因,這個選項可能無法接受。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:可能的話 |
轉換 LOCK TABLE 陳述式 | SSMA 可以將許多 LOCK TABLE 陳述式轉換成資料表提示。 SSMA 無法轉換任何包含 PARTITION 、SUBPARTITION 、@dblink 和 NOWAIT 子句的 LOCK TABLE 陳述式,而且會以轉換錯誤訊息標示這類陳述式。如果您選取 [是],SSMA 會將支援的 LOCK TABLE 陳述式轉換成資料表提示。如果您選取 [否],SSMA 會標示所有 LOCK TABLE 陳述式並顯示轉換錯誤訊息。下表顯示 SSMA 如何轉換 Oracle 鎖定模式: Oracle 鎖定模式 ROW SHARE ROW EXCLUSIVE SHARE UPDATE = ROW SHARE SHARE SHARE EXCLUSIVE SQL Server 資料表提示 ROWLOCK, HOLDLOCK ROWLOCK, XLOCK, HOLDLOCK ROWLOCK, HOLDLOCK TABLOCK, HOLDLOCK TABLOCK, XLOCK, HOLDLOCK TABLOCKX, HOLDLOCK 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
針對 REF CURSOR OUT 參數轉換 OPEN-FOR 陳述式 | 在 Oracle 中,OPEN .. FOR 陳述式可用來將結果集傳回至副程式的 OUT 參數 (類型為 REF CURSOR )。 在 SQL Server 中,預存程序會直接傳回 SELECT 陳述式的結果。SSMA 可以將許多 OPEN .. FOR 陳述式轉換成 SELECT 陳述式。如果您選取 [是],SSMA 會將 OPEN .. FOR 陳述式轉換成 SELECT 陳述式,以將結果集傳回給用戶端。如果您選取 [否],SSMA 會在已轉換的程式碼和 [輸出] 窗格中產生錯誤訊息。 當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |
轉換交易處理陳述式 | SSMA 可以轉換 Oracle 交易處理陳述式: 如果您選取 [是],SSMA 會將 Oracle 交易處理陳述式轉換成 SQL Server 陳述式。 如果您選取 [否],SSMA 會將交易處理陳述式標示為轉換錯誤。 注意:Oracle 會隱含開啟交易。 若要在 SQL Server 上模擬此行為,您必須在希望開始交易的位置手動新增 BEGIN TRANSACTION 陳述式。 或者,您可以在工作階段開頭執行 SET IMPLICIT_TRANSACTIONS ON 命令。 SSMA 會在使用自發交易轉換副常式時自動新增 SET IMPLICIT_TRANSACTIONS ON 。當您在 [模式] 方塊中選取轉換模式時,SSMA 會套用下列設定: 預設/開放式/完整模式:是 |