NULLIF complicado

Este forum é dedicado a códigos errados que se encontram por aí, ou seja, coisas que não se deve fazer de jeito nenhum! Não coloque neste forum dúvidas! (apenas situações bizarras do nosso dia a dia :-)
Responder
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

Este código foi achado numa package:

Selecionar tudo

update TABELA
   set campo1 = NVL(NULLIF(v_var1  ,campo1)     ,campo1)
     , campo2 = NVL(NULLIF(v_var2  ,campo2)     ,campo2)
     , campo3 = NVL(NULLIF(v_var3  ,campo3)     ,campo3)
     , campo4 = NVL(NULLIF(v_var4  ,campo4)     ,campo4)
     .
     .
     .
Repare, o NULLIF retorna NULL caso os 2 argumentos sejam IGUAIS. Se forem diferentes, ele retorna o primeiro argumento.

Mas neste caso, o uso do NULLIF só serviu pra COMPLICAR o entendimento E também pra deixar mais lento. Poderia ter usado o bom e velho DECODE no lugar do NVL(NULLIF(... que ia dar o mesmo resultado. (sendo que usando apenas 1 função).

Selecionar tudo

set decode ( v_var1, campo1, campo1, v_var1)
  , decode ( v_var2, campo2, campo2, v_var2)
  .
  .
  .
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes