0% ont trouvé ce document utile (0 vote)
79 vues19 pages

Introduction à T-SQL : Structures et Procédures

Transféré par

Marwan Jouad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
79 vues19 pages

Introduction à T-SQL : Structures et Procédures

Transféré par

Marwan Jouad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction au langage

Transact SQL (T-SQL)


P2: Structures Alternatives
& Procédures stockées

Pr. MELAOUENE Noussaiba


[email protected]
Année universitaire 2023/2024
Plan du Cours
 Introduction au langage Transact SQL (T-SQL)
 Structure d’un programme T-SQL
 Les variables et Leurs types
 Structures de contrôle (alternatives)
 Les procédures stockées
 Les fonctions Système
 Les curseurs
 La gestion des exceptions
 Les déclencheurs
 La gestion des utilisateurs
 Gestion des rôles
 Gestion des privilèges

SQL SERVER T-SQL


III. Structures de contrôle
IF … ELSE

IF condition Remarque
<instruction>
• Permet de créer des branchements
IF condition
<instruction> • Conditionner l’exécution de certaines instructions
ELSE
<instruction>
• Pas de clause THEN
IF condition
BEGIN
• Une seule instruction permise sinon, si plusieurs
<instruction1>
<instruction2> instruction les délimiter par BEGIN et END
…….
END
ELSE IF Condition
• Pas de ; après le END d’avant le ELSE
BEGIN
<instruction1> • Pas de END IF ni de ELSIF
<instruction2>
…….
END
ELSE
BEGIN
<instruction1>
<instruction2>
……
END;

SQL SERVER T-SQL


III. Structures de contrôle
IF … ELSE: EXEMPLE

IF(SELECT sum(score) FROM films WHERE genre ="SF") < 5


DELETE FROM film WHERE genre ="SF"

DECLARE @sal char;


if @sal=‘A’
(select salairebrut from pilote where salairebrut between 35000 and 50000)
else if @sal=‘B’
(select salairebrut from pilote WHERE salairebrut<35000)
else
(select salairebrut from pilote where salairebrut<15000);

SQL SERVER T-SQL


III. Structures de contrôle
WHILE Continue

WHILE condition Remarque


<instruction>
WHILE condition • Pas de clause LOOP
BEGIN
<instruction1> • Une seule instruction sinon, si plusieurs
<instruction2> instruction les délimiter par BEGIN et END
…….
END; • Pas de END LOOP

WHILE condition
BEGIN
-- code exécuté

!
IF condition
CONTINUE;
-- le code est ignoré si la condition
--est vérifiée
END

SQL SERVER T-SQL


III. Structures de contrôle
WHILE : exemples
BEGIN BEGIN
DECLARE @compt INT = 0; DECLARE @compt INT = 0;

WHILE @compt < 5 WHILE @compt < 5


BEGIN BEGIN
SET @compt = @compt + 1; SET @compt = @compt + 1;
IF @compt = 3 IF @compt <> 3
CONTINUE; CONTINUE;
PRINT @compt; PRINT @compt;
END; END;
END; END;

Résultat Résultat
1 3
2
4
5

SQL SERVER T-SQL


III. Structures de contrôle
WHILE Break

WHILE condition EXEMPLE


BEGIN
-- code exécuté BEGIN
IF condition DECLARE @compt INT = 0;
BREAK;
-- la boucle est abondonnée!!! WHILE @compt < 5
END BEGIN
SET @compt = @compt + 1;
IF @compt= 3
Break;

! END;
END;
PRINT @compt;

Résultat
1
2

SQL SERVER T-SQL


III. Structures de contrôle
CASE: Syntaxe

CASE input_expression

WHEN when_expression

THEN result_expression [ ...n ]

[ ELSE else_result_expression ]

END;

SQL SERVER T-SQL


III. Structures de contrôle
CASE: Exemple
SELECT nom, prenom,
codep = CASE
WHEN 'inf' THEN 'Informatique’
WHEN 'tge' THEN 'Genie Ele’
WHEN 'ele' THEN 'Electronique’
ELSE 'Aucun Programme’
END,
salaire
FROM etudiants ;

SELECT Anciennete = CASE Id_Client

WHEN '3' THEN 'ANCIEN’


WHEN '2' THEN 'PAS SI VIEUX’
WHEN '1' THEN 'RECENT'
ELSE 'ON SAIT PAS TROP'
END,

Id_Client, Nom_Client FROM Client ORDER BY Anciennete

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES

PROCÉDURES STOCKÉES SQL SERVER : DEFINITION


Une procédure stockée SQL Server regroupe une ou plusieurs instructions Transact-SQL
dans une unité logique et est stockée en tant qu'objet dans le serveur de base de
données.

PROCÉDURES STOCKÉES SQL SERVER : INTERET

Lors qu'une procédure stockée est appelée pour la première fois, SQL Server crée un
plan d'exécution et le stocke dans le cache du plan.

Lors des exécutions ultérieures de la procédure stockée, SQL Server réutilise le plan afin
que la procédure stockée puisse s'exécuter très rapidement avec des performances
fiables

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES

PROCEDURES STOCKÉES SQL SERVER : SYNTAXE

-- Transact-SQL Syntax for Stored Procedures in SQL Server

CREATE [ OR ALTER ] { PROC | PROCEDURE }


procedure_name
[ ( @parameter data_type [ = default ] [OUTPUT] )
]
AS
BEGIN
corps_procedure
END ;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCEDURES STOCKÉES SQL SERVER : BONNES PRATIQUES
• Eviter le préfixe sp_ réservé aux procédures du système

• #procedure_name pour les procédures temporaires locales (visibles dans la connexion)

• ##procedure_name pour les procédures temporaires globales (visibles dans toutes les
connexions)

• Utilisez l'instruction SET NOCOUNT ON en tant que première instruction dans le corps de la
procédure. Autrement dit, placez-le juste après le mot clé AS. Cela désactive les messages
que SQL Server renvoie au client après l'exécution de toute instruction SELECT, INSERT,
UPDATE et DELETE.

• Évitez l'utilisation de select * et réduire la sélection aux attributs nécessaires

• Évitez de traiter ou de retourner trop de données

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES SQL SERVER : EXEMPLE 1
CREATE PROCEDURE uspListeProduits
AS
BEGIN
SELECT
no,
nom,

!
prix_conseille
FROM
e_produit
ORDER BY
nom;
END;
REMARQUE
• Dans T-SQL une procédure stockée peut ne contenir qu’une simple requête SQL
• Il est à éviter
• Quand on peut faire quelque chose avec SQL faut pas utiliser T-SQL

EXECUTION
EXECUTE uspListeProduits OU EXEC uspListeProduits

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
MODIFIER UNE PROCÉDURES STOCKÉES : EXEMPLE 2
no nom prix_conseille
ALTER PROCEDURE uspListeProduits -- on fait un ordre par le prix
13 Carte réseau 100
AS 14 Carte graphique 400
BEGIN 10 Hub 1000
SELECT 12 Switch 1500
6 PC P4 10000
no, 1 Onduleur X400 11000
nom, 5 Onduleur X400 11050
prix_conseille 2 Onduleur X405 12000
FROM 3 Onduleur X415 15000
4 Onduleur X489 16000
e_produit 7 Macintosh 16000
ORDER BY 11 Retour 40000
prix_conseille; 8 Satation Sun 50000
END; 9 Station HP 60000

VALIDER LA MODIFICATION : on appuie sur le bouton executer


Commands completed successfully --message de SQL SERVER
EXECUTION
EXECUTE uspListeProduits OU EXEC uspListeProduits
DETRUIRE UNE PROCÉDURES STOCKÉES
DROP PROCEDURE uspListeProduits;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES : LES PARAMETRES : EXEMPLE 3
ALTER PROCEDURE uspListeProduits (@seuil_min_prix AS DECIMAL)
AS
BEGIN
SELECT
no,
nom,
prix_conseille
FROM
e_produit
WHERE no nom prix_conseille
prix_conseille>@seuil_min_prix 14 Carte graphique 400
10 Hub 1000
ORDER BY 12 Switch 1500
prix_conseille; 6 PC P4 10000
END; 1 Onduleur X400 11000
5 Onduleur X400 11050
2 Onduleur X405 12000
3 Onduleur X415 15000
EXECUTION AVEC DES PARAMETRES EFFECTIFS 4 Onduleur X489
7 Macintosh
16000
16000
11 Retour 40000
EXEC uspListeProduits 100; 8 Satation Sun 50000
9 Station HP 60000
EXEC uspListeProduits 1000;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES : AVEC PLUSIEURS PARAMETRES : EXEMPLE 4
ALTER PROCEDURE uspListeProduits (
@seuil_min_prix AS DECIMAL,
no nom prix_conseille
@seuil_max_prix AS DECIMAL 14 Carte graphique 400
)
AS
BEGIN
SELECT no, nom, prix_conseille
FROM e_produit
WHERE prix_conseille>@seuil_min_prix AND prix_conseille<@seuil_max_prix
ORDER BY prix_conseille;
END;

EXECUTION AVEC PLUSIEURS PARAMETRES EFFECTIFS

EXEC uspListeProduits 100, 1000;

EXECUTION AVEC DES PARAMETRES NOMMES


EXEC uspListeProduits @seuil_min_prix=100, @seuil_max_prix=1000;

EXEC uspListeProduits @seuil_max_prix=1000, @seuil_min_prix=100;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES : AVEC PARAMETRES CHAINES : EXEMPLE 5
ALTER PROCEDURE uspListeProduits (
@seuil_min_prix AS DECIMAL,
@seuil_max_prix AS DECIMAL,
@nom_prod AS VARCHAR(25) --VARCHAR(max) quelque soit la taille,
) --SQL SERVER GERE AU MIEUX
AS
BEGIN
SELECT no, nom, prix_conseille
FROM e_produit
WHERE prix_conseille>@seuil_min_prix AND
prix_conseille<@seuil_max_prix AND
nom LIKE '%' + @nom_prod + '%'
ORDER BY prix_conseille;
END;
no nom prix_conseille
5 Onduleur X400 11050
EXECUTION AVEC DES PARAMETRES NOMMES
EXEC uspListeProduits @seuil_min_prix=11000, @seuil_max_prix=12000, @nom_prod='onduleur‘ ;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES :VALEUR PAR DEFAUT DES PARAMETRES : EXEMPLE 6
ALTER PROCEDURE uspListeProduits (
@seuil_min_prix AS DECIMAL=10000,
@seuil_max_prix AS DECIMAL=12000,
@nom_prod AS VARCHAR(max)
)
AS
BEGIN
SELECT no, nom, prix_conseille
FROM e_produit
WHERE prix_conseille>@seuil_min_prix AND
prix_conseille<@seuil_max_prix AND
nom LIKE '%' + @nom_prod + '%' no nom prix_conseille
ORDER BY prix_conseille; 1 Onduleur X400 11000
END; 5 Onduleur X400 11050

EXECUTION AVEC DES PARAMETRES A VALEUR PAR DEFAUT


EXEC uspListeProduits @nom_prod='onduleur‘ ;

SQL SERVER T-SQL


IV. PROCÉDURES STOCKÉES
PROCÉDURES STOCKÉES : ARG EN MODE ADRESSE : EXEMPLE 7
ALTER PROCEDURE uspListeProduits(
@ListeNomProd AS VARCHAR(max) OUTPUT,
@NbrProd AS INT OUTPUT
)
AS
BEGIN
SET @ListeNomProd ='';
SELECT @ListeNomProd = @ListeNomProd +NOM+CHAR(10)
FROM e_produit
ORDER BY nom;
SELECT @NbrProd =@@ROWCOUNT; -- Nombre de lignes traités
-- @@ROWCOUNT variable système
END;

EXECUTION AVEC DES PARAMETRES DE SORTIE


BEGIN
DECLARE @vListeNomProd AS VARCHAR(max), @vNbrProd AS INT;

EXEC uspListeProduits @vListeNomProd OUTPUT, @vNbrProd OUTPUT;

SELECT @vListeNomProd ;
SELECT @vNbrProd ;
END;
SQL SERVER T-SQL

Vous aimerez peut-être aussi