O2SS0160: SELECT ステートメントが変換されません (エラー)

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

バックグラウンド

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: SELECT ステートメントが変換されない

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

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

上記のクエリは、SSMA によって正常に変換される必要があります。

シナリオ 2: ORDER BY 句は、2 つの列/フィールドに基づいて結果セットを並べ替えますが、 句に指定した列/フィールドは 1 つ SELECT のみです

次の例を考え考えください。

SELECT Empno
FROM emp
ORDER BY 1, 2;

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

O2SS0160: SELECT ステートメントが変換されない

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

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

SELECT Deptno
FROM emp
ORDER BY 1;

上記のクエリは、SSMA によって正常に変換される必要があります。

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