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%'
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.
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%'