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