Vous êtes sur la page 1sur 7

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

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

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)