O2SS0160: Standard Edition LECT ステートメントが変換されていません (エラー)

この記事では、SQL Server Migration Assistant (SSMA) for Oracle が句の形式が正しくない ORDER BY 2 つのシナリオでステートメントを変換SELECTしない理由について説明します。

背景

SSMA で複雑な SELECT ステートメントを変換できない場合があります。

考えられる対処方法

SSMA が select ステートメントを変換せず、エラー メッセージを生成しないシナリオは 2 つあります。

シナリオ 1: SELECT DISTINCT 階層クエリのステートメントで CONNECT BY PRIOR ステートメントを使用する

次の例を確認してください。

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno;

SSMA で前のコードを変換しようとすると、次のエラー メッセージが生成されます。

O2SS0160: Standard Edition LECT ステートメントが変換されない

この問題を解決するには、次の ORDER BY 例に示すように、Oracle のソース コードで句を使用します。

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno
ORDER BY empno;

SSMA によってクエリが正常に変換されるようになりました。

シナリオ 2: 句は ORDER BY 2 つの列に基づいて結果セットを並べ替えますが、句で SELECT 指定されている列は 1 つだけです

次の例を確認してください。

SELECT Empno
FROM emp
ORDER BY 1, 2;

SSMA で前のコードを変換しようとすると、次のエラー メッセージが生成されます。

O2SS0160: Standard Edition LECT ステートメントが変換されない

このエラーを解決するには、句内の列の数を ORDER BY 減らすか、句に列を SELECT 追加します。

2 番目の列が次から削除された更新されたクエリを次に ORDER BY示します。

SELECT Deptno
FROM emp
ORDER BY 1;

SSMA によってクエリが正常に変換されるようになりました。

  • O2SS0268: 外部結合を含む階層クエリを変換できない
  • O2SS0285: 階層型クエリが変換されませんでした