繁体   English   中英

从Oracle到Postgres [重复]

[英]From Oracle to Postgres [duplicate]

这个问题已经在这里有了答案:

我们试图从Oracle迁移到Postgres。 我们使用ora2pg,但是此代码有错误:

SELECT DISTINCT UPU.USUA_C_USUARIO
  FROM GN_USUARIOS U,TR_USUARIOS_X_PERFILES_USUARIO UPU,TR_V_PERFILES_USUARIOS PU
  WHERE (U.C_USUARIO = UPU.USUA_C_USUARIO(+)) 
    AND (UPU.PEUS_X_PEUS = PU.X_PEUS) 
    AND U.C_USUARIO = USU.C_USUARIO)) 
   OR NOT EXISTS (
   SELECT UPU2.USUA_C_USUARIO 
     FROM TR_USUARIOS_X_PERFILES_USUARIO UPU2 
     WHERE UPU2.USUA_C_USUARIO = USU.C_USUARIO) 
     OR USER = (
        SELECT V_CONSTANTE 
         FROM GN_CONSTANTES 
         WHERE C_CONSTANTE = 'TRUSUPROP')

我们在PU.USUA_C_USUARIO(+)上出错。 我们没有足够的经验来进行这种转换。 我们如何使用LEFT OUTER JOIN转换代码?

谢谢!

大概像这样:

FROM GN_USUARIOS U
LEFT JOIN TR_USUARIOS_X_PERFILES_USUARIO UPU ON U.C_USUARIO = UPU.USUA_C_USUARIO
LEFT JOIN TR_V_PERFILES_USUARIOS PU ON UPU.PEUS_X_PEUS = PU.X_PEUS
WHERE U.C_USUARIO = USU.C_USUARIO)

或可能:

FROM GN_USUARIOS U
LEFT JOIN ( SELECT UPU.USUA_C_USUARIO, ...
            FROM TTR_USUARIOS_X_PERFILES_USUARIO UPU
            JOIN TR_V_PERFILES_USUARIOS PU ON UPU.PEUS_X_PEUS = PU.X_PEUS
          ) UPU_PU ON U.C_USUARIO = UPU_PU.USUA_C_USUARIO
WHERE U.C_USUARIO = USU.C_USUARIO)

无论哪种情况,请注意,在查询中存在未定义且括号不匹配的USU表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM