PL/SQL - BLOCO BEGIN/END - O QUE ESTÁ ERRADO NESTE BLOCO?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rfbarrozo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 19 Abr 2010 9:50 pm
Localização: RJ

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

Selecionar tudo

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%'
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Selecionar tudo

 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; 
Isso não faz sentido...
Depois do THEN tem que colocar um VALOR, um CAMPO ou uma expressão qualquer... Até uma chamada de função, que retorne 1 valor. Isso aí de colocar um begin/end e 2 chamadas não faz sentido, não dentro de um SELECT.
rfbarrozo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 19 Abr 2010 9:50 pm
Localização: RJ

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%'
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante