Quick Tips: Usando o CASE no Firebird - Parte 2

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Segunda quick tip da série sobre o uso do comando CASE no firebird, hoje demonstrarei como utilizar o case em updates.



Utilizando Case no Firebird – Parte 2

 

Olá pessoal, na última quick tip falamos sobre o uso do case em select, hoje demonstrarei como utilizar o case em updates. Nós vamos fazer um update que atualize o limite de todos os clientes sendo que, os clientes pessoa física deverão ter um limite de 200,00 e os pessoa jurídica um limite de 500,00.

 

Um forma bem simples de resolver isso, seria fazendo dois updates diferentes com uma condição do tipo da pessoa, como mostrado abaixo.

 


 

Uma alternativa bem razoável porém que pode ser reduzida para apenas uma instrução SQL, com o uso do case, como podemos ver abaixo:

 


 

Analisando o update acima percebemos que para cada registro de cliente, o firebird irá verificar se o tipo do mesmo é F ou J e decidirá qual o valor será atualizado no campo limite.

 

É importante ressaltar que não estamos levando em consideração fatores de desempenho pois não é o objetivo do artigo, porém ainda assim vale ressaltar uma diferença entre as duas abordagens.

 

Quando executamos dois updates, precisamos “ir” duas vezes ao banco de dados realizar a alteração, gerando tráfego de rede.

 

Quando executamos o update com o case, vamos apenas uma vez ao banco, tendo menos tráfego de rede em relação à primeira abordagem.

 

Isso não significa que o case sempre é a melhor opção, cada caso é um caso e qualquer uma das duas soluções precisa ser avaliada de acordo com o ambiente e a necessidade de execução da mesma.

 


É isso aí pessoal, espero que tenham gostado.

Até a próxima.

Um Abraço.

Ricardo Coelho.



 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?