Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe por qué SQL Server Migration Assistant (SSMA) para Oracle no convierte el bloque PL/SQL cuando OUTER JOIN
se usa en consultas jerárquicas.
Contexto
En Oracle, CONNECT BY PRIOR
es una condición que identifica la relación entre las filas primarias y las filas secundarias de la jerarquía.
OUTER JOIN
incluye filas de datos en el conjunto de resultados que no coinciden con la tabla combinada y devuelve estas columnas que faltan como NULL
valores.
Cuando se usa una OUTER JOIN
cláusula con CONNECT BY PRIOR
en consultas jerárquicas, SSMA no convierte la instrucción y genera un mensaje de error.
Ejemplo
En el ejemplo siguiente, use una LEFT OUTER JOIN
cláusula con CONNECT BY PRIOR
en la consulta jerárquica:
SELECT
e.empno,
e1.empno,
e1.mgr
FROM
emp e
LEFT OUTER JOIN emp1 e1
ON e.empno = e1.empno
CONNECT BY PRIOR e1.mgr = e.deptno;
Posibles remedios
Para resolver el problema anterior, vuelva a escribir el código SQL mediante el método CTE recursivo (Expresión de tabla común) como se indica a continuación:
WITH EMPTEMP (empno, ename, mgr) AS
(
SELECT
empno,
ename,
MGR
FROM emp
UNION ALL
SELECT
e.empno,
e.ename,
e.MGR
FROM
emp e
JOIN emp1 e1
ON e1.mgr = e.deptno
)
SELECT
e2.EMPNO,
e1.EMPNO AS empno$2,
e1.mgr
FROM
EMPTEMP AS e2
LEFT OUTER JOIN EMP1 AS e1
ON e2.EMPNO = e1.EMPNO
Mensajes de conversión relacionados
- O2SS0160: instrucción SELECT no convertida (error)
- O2SS0285: no se convirtió la consulta jerárquica