CaioCRS 0 Denunciar post Postado Agosto 27, 2014 Fala pessoal, preciso fazer um Update na tabela, só que a condição dele é muito louca...Existe um capo na tabela, e neste campo, eu devo fazer um UPDATE, porém, deverá ser feito na linha onde o turno corresponde com o horário atual.São 3 turnos na tabela, e em um dos campos dele, eu preciso setar um valor de acordo com o turno que estou enviando este update.Eu precisaria de algo com a seguinte lógica Update tabela_X set comando = 'Y' where if ((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '01:00' and '08:00') then turno = 1 else ((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '08:00' and '17:00') then turno = 2 else ((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '17:00' and '01:00') then turno = 3 *A sintaxe está absurda, mas é o que eu tenho em mente do que preciso Se alguém puder dar uma força, fico agradecido, vlwww Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 27, 2014 Dica, tente com CASE. Compartilhar este post Link para o post Compartilhar em outros sites
CaioCRS 0 Denunciar post Postado Agosto 27, 2014 Motta, já tentei, mas como tratar essa necessidade com um case? Case when 'hora_atual' between '01:00' and '08:00' then comando = 'Y'...Mas como fazer o update se a hora for compatível com o turno 1 no caso? Tem como fazer um update + case + where... ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 27, 2014 Crie uma unique key nos campos que não podem ser duplicados, uma solução simples. Compartilhar este post Link para o post Compartilhar em outros sites
CaioCRS 0 Denunciar post Postado Setembro 12, 2014 Valeu Motta, no apuro acabei utilizando um pouco de vb + oracle e consegui resolver o problema. Ficou certinho, mas o duro é que depois não precisou mais desse código, com dó eu só comentei o trecho kkkk Compartilhar este post Link para o post Compartilhar em outros sites
rodrigoords 1 Denunciar post Postado Outubro 3, 2014 Olá, sei que já está resolvido... mais segue a dica de como você poderia ter feito. Update tabela_X set comando = 'Y' where turno = (case when to_char(sysdate, 'hh24:mi') between '01:00' and '08:00' then 1 when to_char(sysdate, 'hh24:mi') between '08:00' and '17:00' then 2 when to_char(sysdate, 'hh24:mi') between '17:00' and '01:00' then 3 end) Compartilhar este post Link para o post Compartilhar em outros sites