Magazine Internet

Code du jour: Après une division par zéro? un bon break.

Publié le 02 décembre 2013 par Wtf

Code du jour: Après une division par zéro? un bon break.Connaissez-vous le jeu the incredible machine? Le but de ce jeu était de créer des réactions en chaîne très compliquées pour réaliser des objectifs simples comme percer un ballon ou mettre une balle dans un trou. Lorien travaille dans une société de prestation, il a eu la chance de croiser lors d'une de ses missions chez un client, un développeur qui rend hommage à "The Incredible Machine" en reproduisant le concept dans ses développements.
Voici une partie d'un script planifié toutes les nuits :

while :
do

 sqlplus Test.sql $A TEST $B
 if [ $? -eq 0 ]
 then
       sleep 60
 else
       echo "Stop"
       break
 fi

done

Une boucle infinie qu'une réponse de la part de sqlplus peut interrompre via un break. Pas terrible, mais Lorien a connu pire, regardons de plus près le script sql.

whenever sqlerror exit sql.sqlcode rollback

whenever oserror exit oscode rollback

WHENEVER SQLERROR exit FAILURE

DECLARE
ok varchar2(1);
   X number := 0;
BEGIN

   select decode(state,'2','1','0') into ok
   from onames
   where aname = '&1'
   and bname = '&2'
   and cname = '&3';

   if ok = '1' then
       X := X / 0;
   else
       X := X / 1;
   end if;

END;
/

exit;

Dans une boucle infinie, toutes les 60 secondes, un script vérifie la présence d'une entrée dans la base. Si elle n'est pas présente, il se termine normalement et recommence sa vérification 60 secondes plus tard. S'il trouve la valeur, il effectue une division par zéro, qui sort donc le script Oracle en erreur. Cette erreur récupérée permettra de sortir de la boucle infinie (fonctionnement normal) par un break et de continuer la fin du script "normalement".

D'après Wikipedia : La créativité d'un individu ou d'un groupe est sa capacité à produire sur commande en un temps donné une quantité donnée de solutions, d'idées ou de concepts permettant de réaliser de façon efficace et inattendue un effet ou une action.

Curieusement, dans notre domaine, le résultat est plus souvent inattendu qu'efficace...

Code du jour: Après une division par zéro? un bon break.
[Advertisement] Make your team a DevOps team with BuildMaster. Pairing an easy-to-use web UI with a free base platform, BuildMaster gets you started in minutes. See how Allrecipes.com and others use BuildMaster to automate their software delivery.

Retour à La Une de Logo Paperblog

A propos de l’auteur


Wtf 169 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine