Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rfbarrozo

[Resolvido] PL/SQL -Bloco BEGIN/END - O que está errado neste blo

Recommended Posts

Amigos. O que está errado no comando abaixo. Como seria a sintaxe correta do Oracle.

Obrigado.

 

SELECT 
CASE 
WHEN TM.NOM_CHAMP = 'SYNCHRO_MAPAIE' then 
BEGIN 
GET_DOMAINEVALEUR ( 2008081 , TM.OLD_VALUE ) AS OLD_VALUE ; 
GET_DOMAINEVALEUR ( 2008081 , TM.NEW_VALUE ) AS NEW_VALUE ; 
END; 
ELSE 
BEGIN 
TM.OLD_VALUE; 
TM.NEW_VALUE 
END 
END 
FROM G_TRACEMODIF TM 
WHERE NOM_CHAMP LIKE '%MAPAIE%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solto assim é meio difícil mas um CASE só pode retornar um valor.

 

Então :

 

SELECT (CASE WHEN TM.NOM_CHAMP = 'SYNCHRO_MAPAIE' then 
        GET_DOMAINEVALEUR ( 2008081 , TM.OLD_VALUE ) 
        ELSE TM.OLD_VALUE  END) OLDVALUE,
.... 

Ajudou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta seria a única forma? Este comando funciona perfeitamente. Tem como melhorar?

 

SELECT

CASE

WHEN TM.NOM_CHAMP = 'SYNCHRO_MAPAIE' then

GET_DOMAINEVALEUR( 2008081 , TM.OLD_VALUE )

ELSE

TM.OLD_VALUE

END AS OLD_VALUE,

CASE

WHEN TM.NOM_CHAMP = 'SYNCHRO_MAPAIE' then

GET_DOMAINEVALEUR( 2008081 , TM.NEW_VALUE )

ELSE

END AS NEW_VALUE

 

FROM G_TRACEMODIF TM

WHERE NOM_CHAMP LIKE '%MAPAIE%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.