[Resolvido] Postgres para Oracle
Boa tarde,
estou transferindo uma aplicação de postgres para oracle, a seguinte SQL faz a consulta na tabela usuários e traz somente os usuários que estão em um cargo igual ou abaixo de quem fez a consulta.
SELECT *
FROM usuarios
WHERE login_usu LIKE '%'
AND nm_usu LIKE '%'
AND id_usu IN
(
SELECT id_usu
FROM usu_grup_cargo ugc_usu
INNER JOIN cargos_aninhados ca
ON (ugc_usu.id_cargo = ca.id_cargo)
WHERE ROW(ugc_usu.id_grupo, ugc_usu.id_cargo) IN
(
SELECT filho.id_grupo, adm_ca_filho.id_cargo
FROM grupos_aninhados filho
INNER JOIN grupos_aninhados pai
ON (filho.esquerda >= pai.esquerda AND filho.direita <= pai.direita)
INNER JOIN usu_grup_cargo ugc
ON (ugc.id_grupo = pai.id_grupo AND ugc.id_usu = 1)
INNER JOIN cargos_aninhados adm_ca_pai
ON (ugc.id_cargo = adm_ca_pai.id_cargo)
INNER JOIN cargos_aninhados adm_ca_filho
ON (adm_ca_filho.esquerda >= adm_ca_pai.esquerda AND adm_ca_filho.direita <= adm_ca_pai.direita)
WHERE filho.esquerda >=
(
SELECT esquerda
FROM grupos_aninhados
WHERE id_grupo = 1
)
AND filho.direita <=
(
SELECT direita
FROM grupos_aninhados
WHERE id_grupo = 1
)
AND pai.id_grupo IN
(
SELECT ugc.id_grupo
FROM usu_grup_cargo ugc
INNER JOIN cargos_mod_perm cmp
ON ugc.id_cargo = cmp.id_cargo
WHERE cmp.id_mod = 8
AND cmp.permissao = 3
AND id_usu = 1
)
)
)ORDER BY login_usu;
No Oracle ele da erro na seguinte instrução WHERE ROW "Erro de SQL: ORA-00936: expressão não encontrada" como que eu faço para verificar uma row com o oracle?
Desde já agradeço.
Discussão (2)
Carregando comentários...