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...