Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 35

Institut Supérieur de Management, Administration et Génie Informatique

SGBD 2
SQL Serveur
Les éléments de base de la Programmation sur
le SGBD 2
 Les variables
 Les structures de contrôle
 Les conditions
 Programmation des procédures stockées sur le SGBD
 Appel des fonctions à partir de requêtes SQL
 Les Curseurs
 Trigger
Écrire des scripts dans le langage procédural du
SGBD
Présentation du T-SQL :

Le T-SQL (Transact Structured Query Langage) est un


langage de communication avec une base de données
relationnelle SQL Server.
Présentation du T-SQL :

Le T-SQL (Transact Structured Query Langage) est un langage de


communication avec une base de données relationnelle SQL
Server.
Les variables

 Déclaration des variables locales


- Synataxe génarale : Declare @nom_variable type
Le caractère @ est obligatoire
- Exemple : Declare @maVariable int
- Déclaration multiple :
Declare @var1 type1, @var2 type2

- Exemple :Declare @x int, @y int, @z char


NB : Declare @x ,@y int est incorrecte
 Affectation

Syntaxe générale : Select @variable=Expression où set


@variable=Expression
- Exemple : select @i=3
set @j=4

select @str=‘GI'
- Affectation multiple
select @i=3,@j=4,@str=‘GI' est correcte

- Mais set @i=3, @j=4, @str=‘GI' est une affectation incorrecte.


 Affichage des valeurs
Pour afficher le contenu d’une variable on utilise la même instruction
select.
Select @i

Affichage multiple : Select @i,@j,@str


NB: On peut utiliser select pour affecter une valeur ou bien pour
afficher une autre, mais pas pour faire les deux, donc l’instruction
select @i=20, @str est incorrecte.

Affichage avec print : Print ‘Chaine de caractère’


On a deux sortie d’affichage:
- Messages pour Print
- Table pour Select
Variable de type table
La particularité des variables de type table, est qu’on peut utiliser
des commandes insert, select, update, delete .

Exemple :
Declare @stg table
(
numInsc int primary key,
nom varchar(20),
prenom varchar(20),
moyenne float
)
insert into @stg values(101,‘AHMED','SALAH',14)
insert into @stg values(102,‘INASS',‘ZIYAD',14.5)
insert into @stg values(103,‘KARIM',‘SIDQI',12.5)
Select * from @stg

UPDATE @stg set moyenne=15.5 where numInsc=102


DELETE FROM @stg WHERE nom='SIDQI'
Bloc Instruction
- Un bloc d’instruction est une ensemble d’instruction T-SQL qui sont considéré comme
un tout ( une seule).
- Un bloc d’instruction peut contenir d’autres sous blocs.
Syntaxe générale :
Begin
--instruction(1)
--instruction(2)

--instruction(N)
end
- Example:
declare @i int,@j int
begin
set @i=2
set @j=3
select @i=@i+1
set @j=@j-1
select @i as 'i', @j as 'j'
end
Structure Itérative
La structure itérative est une structure qui permet d’exécuter un
même traitement plusieurs fois.
Syntaxe générale :
While(condition)
Begin
-instruction ou bloc d’instructions

End

11
Exemple : calcule de la factorielle d’un nombre

Declare @i int, @f int,@n int


select @n=6, @f=1, @i=1
while (@i<=@n)
begin
set @f=@f*@i
set @i=@i+1
end
select @f as “le factoriel”
Structure Alternative
La structure alternative est une structure de contrôle qui permet
d’exécuter un de
deux actions suivant une condition. Syntaxe :
If(condition)
-instruction ou bloc d’instruction
else
-instruction ou bloc d’instruction
NB : la partie « else » est optionnelle. Il est possible d’imbriquer
des if.
 Les Variables Globales

Les variables globales sont affectées directement par le serveur, elle


retournent une seul valeur, elles sont utilisées pour communiquer une
information au client, elles sont représentées par @@nom_variable
Exemples :
 @@error :indique le type d’erreur survenu lors de la dernière
instruction.
 @@rowcount : indique le nombre de lignes affectées par la dernière
instruction.
2. Programmation des procédures stockées sur le
SGBD
Définition:
Une procédure stockée (Stored Procedure pour SQL Server) est une
suite d’instructions SQL stockées dans la base de données et pouvant
être exécutée par appel de son nom avec ou sans paramètre.
Procédure stockée simple

Exemple:
Create proc ps_Client
as
begin
select * from Clients where IdClient>3
end
--exécution de la procédure
Execute ps_Client
Procédure stockée avec paramètre d’entrée
Exemple:
 
create proc ps_infoClient
(
@num int
)
as
begin
if exists(select * from Clients where IdClient=@num)
select * from Clients where IdClient=@num
else
print 'Pas de Client'
end

--exécution de la procédure
exec ps_infoClient 3
Procédure stockée avec paramètre d’entrée et sortie
Exemple1:
---Affiche le nombre des clients qu'ont la même ville
create proc ps_NbClientsVille2
(
@ville varchar(20),
@nbClients int output
)
as
begin
set @nbClients=(select count(IdClient) from Clients where Ville=@ville)
end

--exécution de la procédure
Declare @nbCli int
Exec ps_NbClientsVille2 ‘RABAT', @nbCli output
select 'Le nombre de Clients est:‘ , @nbCli
create TYPE TypeTableParm1 AS TABLE (col1varchar(30))
go
create procedure prcTableParm1(@mytmpTable TypeTableParm1 READONLY)
as
begin
select * from @mytmpTable
end
go
declare @mytmpTable1 as TypeTableParm1
insert into @mytmpTable1(col1) values ('par1')
insert into @mytmpTable1(col1) values ('par2')
exec dbo.prcTableParm1 @mytmpTable1
Procédure stockée avec paramètre d’entrée et sortie
Exemple2:
 
Créer une procédure stockée qui retourne la somme des prix à payer par chaque client en utilisant
un paramètre de sortie.
create proc ps_SommePrix
(
@id int,
@somme int output
)
as
begin
select @somme = sum(Montant) from Commande where IdClient=@id
end
 
Declare @m int
exec ps_SommePrix 1,@m output
select @m
Les Curseurs
Les curseurs permettent de réaliser des traitements itératifs sur des
jeux de résultats, comme le balayage d’une table, enregistrement
par enregistrement, en lecture seul.
 Syntaxe
DECLARE cursor_name CURSOR FOR select_statement

 Arguments :
cursor_name : Nom du curseur de serveur Transact-SQL défini.
select_statement : Instruction SELECT standard qui définit le jeu de
résultats du curseur.
Les Curseurs
 L'instruction OPEN remplit le jeu de résultats tandis que
l'instruction FETCH renvoie une ligne à partir de ce jeu de
résultats.
 Le variable globale @@FETCH_STATUS établit un rapport
d'état de la dernière instruction FETCH

0 : L'instruction FETCH a réussi.


-1 : L'instruction FETCH a échoué ou la ligne se situait au-delà du
jeu de résultats.

-2 : La ligne recherchée est manquante.


Les Curseurs(Exemple)
DECLARE @Id_Client INT
DECLARE crClient CURSOR FOR SELECT Id_Client FROM Client
OPEN crClient
FETCH NEXT from crClient INTO @Id_Client
WHILE @@FETCH_STATUS = 0
BEGIN
print @Id_Client
FETCH NEXT from crClient INTO @Id_Client
END
CLOSE crClient
DEALLOCATE crClient
Fonctions
 Définition: 
Une fonction définie par l'utilisateur  est une routine Transact-SQL
qui accepte des paramètres, exécute une action, par exemple un
calcul complexe, et retourne le résultat de cette action sous forme
de valeur. La valeur retournée peut être une valeur scalaire
(unique) ou une table. 
 Syntaxe:
CREATE FUNCTION function_name ( ….) RETURNS type_Retour
AS
BEGIN
--
RETURN valeur_Retour
END
Fonction simple

Exemple:
Create function siteEcole() returns varchar(80)
as
begin
return 'www.ismag.ma'
end

Appel de la fonction:
select dbo. siteEcole()
Fonction avec paramètre d’entrée
Exemple 1:

Create function doubleNbr(@nbr int) returns int


as
begin
return @nbr*2
End

Declare @n int
set @n=5
select dbo.doubleNbr(@n)
Fonction avec paramètre d’entrée

Exemple 2:

create function RacineCarreNbr(@nbr int) returns int


as
begin
return sqrt(@nbr)
end
Declare @n int
set @n=36
select dbo.RacineCarreNbr(@n) as 'Résultat'
Fonction qui retourne une table
Syntaxe
create function FonctionTable(@variable1 type1, @variable2 type2, )
returns @TabVar table(champ1 type1, champ2 type2, … )
as
begin
…instructions
end
return
end

Affichage Fonction :
select * from dbo. FonctionTable(paramétre1, paramétre1,)
Fonction qui retourne une table
Exemple
create function TableMulti(@val int) returns @Tab table(a int, x varchar(2), b
int,egal varchar(2), c int)
as
begin
declare @i int
set @i=1
while @i <=10
begin
insert into @Tab values(@i,'x', @val,'=', @i*@val)
set @i=@i+1
end
return
end
select * from dbo.TableMulti(5)
Les Triggers
Triggers

 Les triggers spécifient explicitement à quel moment


doivent-ils être vérifiés (i.e. insert, delete, update)
 Les triggers sont des règles ECA : Evénement,
Condition, Action

30
Trigger 
 Avant l’exécution
• Syntaxe Générale:

CREATE TRIGGER TG_EXEMPLE1 ON TABLE1


INSTEAD OF INSERT, UPDATE
AS
BEGIN
-- Instruction …
END
Trigger 
 Au moment de l’exécution
• Syntaxe Générale:

CREATE TRIGGER TG_EXEMPLE 2 ON TABLE1


FOR INSERT, UPDATE
AS
BEGIN
-- Instruction …
END
Trigger 
 Après l’exécution
• Syntaxe Générale:

CREATE TRIGGER TG_EXEMPLE ON TABLE1


AFTER INSERT, UPDATE
AS
BEGIN
-- Instruction …
END
Trigger 
 Exemples
create table Coureur
(
IdCr int primary key,
NomCr varchar(20),
Age int
)
CREATE TABLE Competition
(
IdComp int primary key,
DateComp DATE,
Ville varchar(20),
IdCour int references Coureur(IdCr)
)
Trigger 
 Exemples
Delete from Coureur where IdCr=2

CREATE TRIGGER Tg_Sup_Cour ON Coureur


INSTEAD OF DELETE
AS
BEGIN
DELETE FROM Competition WHERE IdCour=(SELECT IdCr FROM
deleted)
DELETE FROM Coureur WHERE IdCr=(SELECT IdCr FROM deleted)
END
Delete from Coureur where IdCr=2

Vous aimerez peut-être aussi