O2SS0160: SELECT 문이 변환되지 않음(오류)

이 문서에서는 Oracle용 SQL Server Migration Assistant(SSMA)가 잘못된 형식 ORDER BY 의 절이 있는 두 가지 시나리오에서 문을 변환 SELECT 하지 않는 이유를 설명합니다.

배경

SSMA가 복합 SELECT 문을 변환할 수 없는 경우가 있습니다.

가능한 해결 방법

SSMA가 select 문을 변환하지 않고 오류 메시지를 생성하는 두 가지 시나리오가 있습니다.

시나리오 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 절은 두 열/필드를 기준으로 결과 집합을 정렬하지만 절에서 SELECT 단 하나의 열/필드만 지정했습니다.

아래 예제를 고려하세요.

SELECT Empno
FROM emp
ORDER BY 1, 2;

SSMA에서 위의 코드를 변환하려고 하면 다음과 같은 오류 메시지가 생성됩니다.

O2SS0160: SELECT 문이 변환되지 않음

이 오류를 해결하려면 절의 필드/열 수를 줄이거나 절에 ORDER BYSELECT 필드/열을 더 추가합니다.

다음은 다음에서 두 번째 열 참조를 제거한 업데이트된 쿼리입니다 ORDER BY.

SELECT Deptno
FROM emp
ORDER BY 1;

위의 쿼리는 SSMA에 의해 성공적으로 변환되어야 합니다.

  • O2SS0268: 외부 조인이 있는 계층적 쿼리를 변환할 수 없습니다.
  • O2SS0285: 계층적 쿼리가 변환되지 않았습니다.