Académique Documents
Professionnel Documents
Culture Documents
Cours SGBD2 SqlServer
Cours SGBD2 SqlServer
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 :
select @str=‘GI'
- Affectation multiple
select @i=3,@j=4,@str=‘GI' est correcte
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
11
Exemple : calcule de la factorielle d’un nombre
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
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:
Declare @n int
set @n=5
select dbo.doubleNbr(@n)
Fonction avec paramètre d’entrée
Exemple 2:
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
30
Trigger
Avant l’exécution
• Syntaxe Générale: