PROGRAMMATION EN TRANSACT-SQL | Le Langage Transact SQL | Exercices Corrigés Transact SQL

PROGRAMMATION EN TRANSACT-SQL


I- Eléments de base de Transact-Sql

1- Commentaire
-- : commentaire sur une seule ligne


/*commentaire
  sur
  Plusieurs lignes
*/
2- Bloc d'instructions
                                              Begin
                                                    Instructions
                                              End
3- variables
a. déclaration:

                                                DECLARE  @Variable type

Type: int, smallint, decimal, numeric, float, real, datetime, char, varchar, text, nvarchar…
(voir photocopie (types de données)
b. Affectation

                                                set @variable= valeur
Exemple:

DECLARE @N int
set @N=10
set @N=@N+1
PRINT 'N=' + convert(VARCHAR,@N)

Résultat : N=11

PRINT : instruction d'affichage.
CONVERT( ) : Fonction de conversion de type.

Exercice:
Ecrire le code T-Sql qui permet de permuter la valeur de 2 variables.

declare @N1 int, @N2 int, @Temp int
set @N1=10
set @N2=20
print 'Avant Permutatiion:'
print 'N1='+convert(varchar,@N1)+'  N2='+convert(varchar,@N2)
set @Temp=@N1; set @N1=@N2; set @N2=@Temp;
print 'Après Permutatiion:'
print 'N1='+convert(varchar,@N1)+'  N2='+convert(varchar,@N2)

Avant Permutation:
N1=10  N2=20
Après Permutation:
N1=20  N2=10

4- Traitement conditionnel

a-    instruction if …. Else

If  (condition)
   Instruction(s) si la condition est varie;
  Else
  Instruction(s) si la condition est fausse;

Exemple: déterminer le maximum et le minimum de 3 nombres.

DECLARE @N1 int, @N2 int, @N3 int,@Max int,@Min int
set @N1=10
set @N2=20
set @N3=5

if (@N1>@N2)
   begin
      set @Max=@N1;
      set @Min=@N2;
   end
  else
   begin
      set @Max=@N2;
      set @Min=@N1;
   end

if @N3> @Max set @Max=@N3
if @N3< @Min set @Min=@N3

print 'Maximum=' + convert(varchar,@Max)
print 'Minimum=' + convert(varchar,@Min)

Maximum=20
Minimum=5

b-   instruction Case
  • Case  simple
Syntaxe:
Set @Variable1 =  Case @variable2
       When Valeur1 Then Résultat1;
       When Valeur2 Then Résultat2;
       When Valeur3 Then Résultat3;
           ….
       Else Résultat n;
End

Ceci est équivalent à

If(@variable2=valeur1)
  Set @variable1=resultat1;
Else
       If(@variable2=valeur2)
      Set @variable1=resultat2;
   Else
             If(@variable2=valeur3)
        Set @variable1=resultat3;
      Else
         Set @variable1=resultatn;
Exemple 1:

DECLARE @N int
DECLARE @R varchar(50)
set @N=3

set @R=case @N
            when 0 then 'ZERO'
            when 1 then 'UN'
            when 2 then 'DEUX'
            when 3 then 'TROIS'
            when 4 then 'Quatre'
            ELSE 'Nombre supérieur à 4 ou inférieur à 0'
       End
print 'R='+@R

R=TROIS

Exemple 2:

select FILMCOD,FILMTIT,ORIGINE = case filmnat
                                    when 'Mar' then 'Moroc'
                                    else 'Etranger'
                                 End
from Film

  • Case  Recherché

Variable1 =  Case
       When condition1 Then Résultat1;
       When condition2 Then Résultat2;
       When condition3 Then Résultat3;
           ….
       Else Résultat n;
End



Exemple 1:

select FILMCOD,FILMTIT,Type=case
                               when FLIMDU>=90 then 'Long Métrage'
                               when FLIMDU>=60 then 'Moyen Métrage'
                               Else 'Court Métrage'
                            End
from Film

Exemple 2: Afficher la mention selon la moyenne de l'étudiant:

DECLARE @Moy float
DECLARe  @mention varchar(20)
Set @Moy=15.25

Set @mention= case
 when @moy>=16 then 'Tres bien'
 when @moy>=14 then 'Bien'
 when @moy>=12 then 'Assez bien'
 when @moy>=10 then 'Passable'
 else 'Echec'
end

Print 'Moyenne: '+ convert(varchar,@moy)
Print 'Mension: '+@mention

Moyenne: 15.25
Mension: Bien

Exercice :

Afficher la saison en fonction du mois en supposant que :
Mois     Saison
12, 1,2  Hiver
3, 4,5   Printemps
6, 7,8   Eté
9, 10,11 Automne


5- Traitement Répétitif

a-    Boucle WHILE
WHILE (condition)
Begin
      Instruction(s)
      [Continue]
        …

      [Break]
        …

End




b- Exemple: Ecrire le code T-Sql qui affiche:

Nombre                   Carré
0                                0
1                                1
2                                4
3                                9
.                                 .
.                                 .
10                              100

DECLARE @i int
print 'Nombre' + char(9) +'Carré'
set @i=0
while(@i<=10)
begin
  print convert(varchar,@i)+ char(9) + convert(varchar,@i*@i)
  set @i=@i+1
end

Exercice

Ecrire ....pour calculer N!

DECLARE @i int

DECLARE @N int
DECLARE @p varchar

set @N=3
set @i=@N
set @p=1
while(@i>=1)
                        begin
                          set @p = @p*@i
                          set @i=@i-1
                        end
                       
print +@p


Exemple 2:

Que fait le code Suivant ?

DECLARE @i int
set @i=0
while(@i<=255)
begin
  print convert(char,@i) + char(@i)
  set @i=@i+1
end

il affiche les code ASCII avec leurs caractères correspondants.



6- Fonctions prédéfinies en Transact SQL

Exercices
Exercice 1:
Afficher la date système sous le format:
Mardi 4 janvier 2011

Exercice 2:
Soit  une chaîne  @ch='INFORMATIQUE'. Ecrire le code T_Sql qui affiche:
I
IN
INF
INFO
INFOR
INFORM
INFORMA
INFORMAT
INFORMATI
INFORMATIQ
INFORMATIQU
INFORMATIQUE

Exercice 3:

Ecrire le code T_Sql qui affiche:
I
   N
     F
       O
         R
           M
             A
               T
                 I
                   Q
                     U
                       E


Exercice 4:
Ecrire le code T_Sql qui inverse une chaîne :
Ex:
Chaine : INFORMATIQUE
Inverse : EUQITAMROFNI

--version 1

DECLARE @ch varchar(60)
DECLARE @invch varchar(60)
declare @i int;

set @ch='INFORMATIQUE'

set @invch=''

set @i=len(@ch)

while (@i>0)
 begin
   set @invch=@invch+substring(@ch,@i,1)
   set @i=@i-1
 end
print @invch

--version 2

DECLARE @ch varchar(60)
set @ch='INFORMATIQUE'
print reverse(@ch)



Article plus récent Article plus ancien

Leave a Reply

Telechargement