consulta funciona no SQL BUILDER mas não funciona na aplicação RESOLVIDO

SELECT
esquadrao_reserva,
cafe,
almoco,
jantar,posto,
CASE WHEN posto IN (‘MB’,‘BR’,‘CL’,‘TC’,‘MJ’,‘CP’,‘1T’,‘2T’,‘AP’) THEN “OFICIAL” WHEN posto IN (‘SO’,‘1S’,‘2S’,‘3S’) THEN “GRADUADO” WHEN posto IN (‘S2’,‘S1’,‘CB’) THEN “PRAÇA” END AS refeitorio
FROM
reserva

retorna esse erro

SelectLimit(SELECT esquadrao_reserva, cafe, almoco, jantar, posto, CASE WHEN posto IN (‘MB’,‘BR’,‘CL’,‘TC’,‘MJ’,‘CP’,‘1T’,‘2T’,‘AP’) THEN “OFICIAL” WHEN posto IN ('BR’0,'BR’1,'BR’2,'BR’3) THEN 'BR’4 WHEN posto IN ('BR’5,'BR’6,'BR’7) THEN 'BR’8 END as refeitorio from reserva , 12, 0)

obrigada por responder, mas o código esta correto. Já testei na consulta ao banco e no SQL BUILDER do scriptcase e funciona. Mas quando coloco esse código no SQL da aplicação de consulta ele dá erro de conexão ao banco. Se eu tirar a instrução: CASE WHEN posto IN (‘MB’,‘BR’,‘CL’,‘TC’,‘MJ’,‘CP’,‘1T’,‘2T’,‘AP’) THEN “OFICIAL” WHEN posto IN (‘SO’,‘1S’,‘2S’,‘3S’) THEN “GRADUADO” WHEN posto IN (‘S2’,‘S1’,‘CB’) THEN “PRACA” END AS refeitorio, volta a funcionar, mas sem o resultado do que eu quero.anexei as consultas que fiz.
e no ambiente de produção da erro:
Atenção
Erro ao acessar o banco de dados

SelectLimit(SELECT posto, esquadrao_reserva, cafe, almoco, jantar, CASE WHEN posto IN (‘MB’,‘BR’,‘CL’,‘TC’,‘MJ’,‘CP’,‘1T’,‘2T’,‘AP’) THEN “OFICIAL” WHEN posto IN ('BR’0,'BR’1,'BR’2,'BR’3) THEN 'BR’4 WHEN posto IN ('BR’5,'BR’6,'BR’7) THEN 'BR’8 END as refeitorio from reserva , 12, 0)


errro.PNG

Silvia,

Acho que o problema é a mistura de aspas simples com aspas duplas. Use somente as aspas simples em todo o teu select, tipo assim:

SELECT
esquadrao_reserva,
cafe,
almoco,
jantar,posto,
CASE WHEN posto IN (‘MB’,‘BR’,‘CL’,‘TC’,‘MJ’,‘CP’,‘1T’,‘2T’,‘AP’) THEN ‘OFICIAL’ WHEN posto IN (‘SO’,‘1S’,‘2S’,‘3S’) THEN ‘GRADUADO’ WHEN posto IN (‘S2’,‘S1’,‘CB’) THEN ‘PRAÇA’ END AS refeitorio
FROM
reserva

Você pode tirar o case do sql, deixar apenas o campo posto e criar o campo refeitório, a descrição dele você faz no evento onRecord.
ex:
if({reserva}==‘MB’ || {reserva}==‘BR’)
{
{refeitorio} = “OFICIAL”;
}
else if({reserva}==‘SO’ || {reserva}==‘1S’)
{
{refeitorio} = “GRADUADO”;
}
e assim por diante

Valeu! Rodrigo Goulart Padovezzi, sua sugestão me ajudou a resolver. Muito obrigada"

Para incluir uma experiência.
Sempre tenho que trocar formas de executar os sql no COMANDO SQL da aplicação. Sendo que no SQL BUILDER e diretamente no banco funciona.
Trocar funções CASE WHEN por DECODE, sempre lembrar de colocar AS para nome da variável.
O COMANDO SQL da aplicação uma vez passado pelo “teste” do SQL BUILDER, aba EXECUÇÃO deveria funcionar.

Estou usando ORACLE.

Esta é uma sugestão de revisão dessa parte da ferramenta.

O problema persiste.
CASE não funciona direito no SQL da aplicação.

Funciona no SQL builder.
Mas dá erro na aplicação.