Vous êtes sur la page 1sur 3

Requêtes utilisées dans le cours

EXEMPLE DE WHILE
BEGIN /* DEBUT DE MON BLOC DE CODE PRINCIPAL */
DECLARE @i int;
SET @i = 5;
WHILE @i < 8
BEGIN /* DEBUT DE MON BLOC DE CODE DU WHILE */
PRINT 'DEBUT DE Boucle et @i vaut ' + CAST (@i AS NVARCHAR)

SET @i = @i + 1
PRINT 'FIN DE Boucle et @i vaut ' + CAST (@i AS NVARCHAR)
PRINT '-----------'

END /* FIN DE MON BLOC DE CODE DU WHILE */

PRINT 'A la fin, @i vaut ' + CAST(@i AS NVARCHAR)

END; /* FIN DE MON BLOC DE CODE PRINCIPAL */

BEGIN
DECLARE @i INT;
SET @i = -5
WHILE @i < 5
BEGIN
SET @i = @i + 1
/* pour éviter la division par 0 */
IF @i = 0
CONTINUE /* on passe au tour suivant */
SELECT @i, 10 / @idu ;
END
END

EXEMPLE DE CASE
/* CASE SUR DES CHAINES DE CARACTERES */
SELECT Nom, CASE Nom WHEN 'MERLIN' THEN 'ok'
WHEN 'GAMOTE' THEN 'ok '
ELSE 'no ok' END
FROM Utilisateurs

/* CASE SUR DES NUMERIQUES */


SELECT prix_Potions, CASE WHEN prix_Potions IS NULL THEN 'VRAIMENT Pas bon'
WHEN prix_Potions < 0 THEN 'Pas bon'
WHEN prix_Potions < 20 THEN 'Pas cher'
WHEN prix_Potions > 100 THEN 'Très cher'
ELSE 'OK' END [Catégorie de prix]
FROM Potions ORDER BY prix_Potions
EXEMPLE DE IF
BEGIN
DECLARE @i int;
SET @i = 0;

WHILE @i < 8
BEGIN
SET @i = @i + 1
IF @i = 5
BEGIN
print 'On a trouvé le résultat, on sort !'
BREAK
print 'CE MESSAGE EST TRISTE, IL NE S''AFFICHERA
JAMAIS....'
END
ELSE
BEGIN
print 'Dans la condition else et @i vaut ' + CAST
(@i AS NVARCHAR)

CONTINUE /* Il passe au tour de boucle suivant ! */

print 'ICI ON VA AJOUTER DU BLABLA POUR VERIFIER LE


FONCTIONNEMENT DE "CONTINUE"'
/* Ici, je peux faire plein de choses, on y arrivera
JAMAIS */
END
PRINT 'on continue...'
END
print 'AU FINAL, @i vaut ' + CAST (@i AS NVARCHAR)
END;

EXEMPLE DE GESTION DES ERREURS

BEGIN
DECLARE @j INT;
SET @j = -5
WHILE @j < 5
BEGIN
SET @j = @j + 1
BEGIN TRY
SELECT @j, 10 / @j ;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber
, ERROR_MESSAGE() AS ErrorMessage
, ERROR_LINE() AS ErrorLine;
END CATCH
END
END
EXEMPLE COMPLET

BEGIN
DECLARE @idCh INT /* pour récupérer l'id de la chambre */
DECLARE @idHotel INT /* pour récupérer l'id de l'hotel dans mon curseur
*/
DECLARE @Comm NVARCHAR(4000) /* pour récupérer le commentaire */
DECLARE @NomHotel NVARCHAR(4000) /* pour récupérer le nom de l'hotel*/

DECLARE C1 CURSOR FOR


SELECT idChambre, Hotel, Commentaire FROM Chambres ;

OPEN C1; /* pour ouvrir le curseur */

FETCH C1 INTO @idCh, @idHotel, @Comm; /* première lecture du curseur */


WHILE @@FETCH_STATUS=0 /*Tant que la lecture fonctionne */
BEGIN
/* le traitement */
PRINT CAST(@IdCh AS NVARCHAR(20)) + ' - ' + ISNULL(@Comm, ' pas de
commentaire')

IF @Comm IS NULL
BEGIN
/* Quand le commentaire est NULL */
/* UPDATE Chambres SET Commentaire = '' WHERE idChambre = @idCh; */
PRINT 'On remplace le commentaire NULL par le nom de l''hotel!'

/* Rechercher l'hotel correspondant à cette chambre */


/* REQUETE VERS HOTEL ET RECUPERATION DU NOM DANS UNE VARIABLE */
SELECT @NomHotel = Libelle FROM Hotels WHERE idHotel = @idHotel;

PRINT 'On Met à jour avec le nom de l''hotel!'


UPDATE Chambres SET Commentaire = @NomHotel WHERE idChambre = @idCh;

END
ELSE
Print 'Tout va bien ! '

/*
IF < CONDITON >
<TRAITEMENT SI VRAI : UNE SEULE LIGNE / UN BLOC BEGIN ... END>
[ ELSE
<TRAITEMENT SI FAUX : UNE SEULE LIGNE/ UN BLOC BEGIN ... END> ]
*/

/*Lire la ligne suivante*/


FETCH C1 INTO @idCh, @idHotel, @Comm;
END

CLOSE C1; /* pour fermer le curseur */


DEALLOCATE C1; /* pour libérer les ressources */

END;

Vous aimerez peut-être aussi