O2SS0160: instrução SELECT não convertida (Erro)

Este artigo descreve por que Assistente de Migração do SQL Server (SSMA) para Oracle não converte a SELECT instrução em dois cenários que têm cláusulas mal formadasORDER BY.

Tela de fundo

Há casos em que o SSMA não pode converter instruções complexas SELECT .

Possíveis soluções

Há dois cenários em que o SSMA não converte a instrução select e gera uma mensagem de erro.

Cenário 1: SELECT DISTINCT a instrução é usada com CONNECT BY PRIOR a instrução na consulta hierárquica

Considere o exemplo abaixo:

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

Quando você tenta converter o código acima no SSMA, ele gera a seguinte mensagem de erro:

O2SS0160: instrução SELECT não convertida

Para resolver o problema acima, você pode usar a ORDER BY cláusula no código-fonte da Oracle, conforme mostrado abaixo:

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

A consulta acima deve ser convertida com êxito pelo SSMA.

Cenário 2: ORDER BY a cláusula classifica o conjunto de resultados com base nas duas colunas/campos, mas você especificou apenas uma coluna/campo na SELECT cláusula

Considere o exemplo abaixo:

SELECT Empno
FROM emp
ORDER BY 1, 2;

Quando você tenta converter o código acima no SSMA, ele gera a seguinte mensagem de erro:

O2SS0160: instrução SELECT não convertida

Para resolver esse erro, reduza o número de campo/coluna na ORDER BY cláusula ou adicione campos/colunas adicionais na SELECT cláusula.

Aqui está a consulta atualizada em que removemos a segunda referência de coluna do ORDER BY:

SELECT Deptno
FROM emp
ORDER BY 1;

A consulta acima deve ser convertida com êxito pelo SSMA.

  • O2SS0268: a consulta hierárquica com junção externa não pode ser convertida
  • O2SS0285: a consulta hierárquica não foi convertida