Programmation Structurée en T-SQL

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

« 

Programmation structurée » en T-SQL

Déclaration de variables dans un script


On utilise la syntaxe :
DECLARE @nomVariable AS TypeDeDonnees -- pour une seule variable
DECLARE @nomVar1 as type1, @nomVar2 as type2,… -- pour plusieurs
variables
DECLARE @nomVar1 as TypeDonnee = valeur
Une variable est locale au « lot » dans lequel elle est déclarée.
Exemples

Pour affecter une valeur à une variable, on peut utiliser :


 L’instruction set : set @nomVariable = valeur
 l’affectation dans une requête SQL : SELECT @nomVariable=valeur -- dans
ce dernier cas la valeur peut être une colonne
Exemples simples avec variables

Une variable peut être affectée par une valeur issue d’une requête scalaire (req
qui retourne un seul résultat)

1
Affectations multiples
On peut utiliser l’instruction SET pour UNE variable à la fois, donc si on a plusieurs résultats à récupérer,
la syntaxe devient fastidieuse. On peut alors utiliser l’instruction SELECT avec affectations multiples

MAIS, attention au SELECT lorsque affecté à une variable.


Saisir et exécuter le code suivant

Que peut-on conclure?


Pas d’erreur mais affichage du dernier enregistrement. Ceci n’est pas logique.

Modifier le code comme suit, ensuite l’exécuter :

Conclusion
L’affectation via set est plus intéressante car elle génère une exception

2
Les structures de contrôle
Le « IF »

Boucle « while »
Exemple « initialisation » de table avec des données en utilisant une boucle

3
Procédures et fonctions stockées
Une procédure(ou fonction) stockée est un objet de schéma (au même titre
qu’une table par exemple)
Une procédure stockée dans SQL Server est un groupe d'une ou de plusieurs
instructions Transact-SQL qui sont compilées ensuite stockées sur le serveur de
BD pour des utilisations futures.
Elles ont plusieurs avantages :
 Réduire le trafic réseau : En effet, les commandes d'une procédure sont
exécutées comme un seul lot. Cela peut réduire considérablement le trafic
réseau entre le serveur et le client, car seul l'appel pour exécuter la
procédure est envoyé sur le réseau
 Réutilisation du code
 Maintenance simplifiée
 etc
On peut globalement classer les procédures stockées en :
 procédures système(prédéfinies)
 procédures utilisateurs
https://msdn.microsoft.com/en-us/library/ms187926%28v=sql.110%29.aspx

On peut créer une procédure stockée visuellement dans SSMS ou directement en


utilisant l’éditeur de requêtes.
On procède en deux étapes :
1) On crée une procédure stockée : cette étape permet de compiler la
procédure et ensuite la stocker sur le serveur

2) Ensuite on l’appelle pour l’exécuter


EXEC nomProc arg1, arg2,…

4
Exemple de procédure stockée
Le code suivant crée une procédure stockée :
 nommée getCustomerOrders
 ayant 2 paramètres :
o @custId : paramètre en entrée (sert à fournir le numéro de client
pour lequel on veut rechercher les commandes)
o @numRows : paramètre en sortie, sert à retourner le nombre de
commandes du client

Après la création de la procédure, on peut vérifier sa présence sous le nœud


Progammabilité de la BD.

5
Exécution (ou appel) d’une procédure stockée
Dans ce qui suit, on déclare 2 variables :
 une pour le num du client(@custId) à fournir et qui doit être initialisé pour
pouvoir utiliser sa valeur dans la procédure (Paramètre IN)
 une autre variable pour récupérer le nombre de commandes(@nOrders).

Remarque importante
Si une procédure définie par l'utilisateur est appelée, sans spécifier le schéma (on parle d’appel
non qualifié), le moteur de base de données, recherche la procédure dans l'ordre suivant:
1. Le schéma sys de la base courante.
2. Le schéma par défaut de l'appelant si elle est exécutée dans un lot ou dans SQL dynamique.
Si le nom de la procédure non qualifié apparaît à l'intérieur du corps d'une autre définition de
la procédure, le schéma qui contient cette autre procédure est recherché ensuite.
3. Le schéma dbo dans la base de données courante.

Morale de l’histoire: qualifiez les noms!!!

6
If a nonqualified user-defined procedure is specified, the Database Engine searches for the
procedure in the following order:
1. The sys schema of the current database.
2. The caller's default schema if it is executed in a batch or in dynamic SQL. Or, if the
nonqualified procedure name appears inside the body of another procedure definition, the
schema that contains this other procedure is searched next.
3. The dbo schema in the current database.

Exercice
Créer une procédure stockée qui permet de retourner le nom du contact ainsi que
le numéro de téléphone pour un fournisseur dont on fournit le id(supplierId) en
paramètre.
Tester la procédure créée.

Les fonctions stockées


 Elles sont similaires aux procédures stockées.
 Elles ont la particularité de pouvoir être appelée à partir de requêtes SQL (un
peu comme les fonctions prédéfinies comme upper()).
https://msdn.microsoft.com/en-us/library/ms186755%28v=sql.110%29.aspx

Création d’une fonction stockée


L’exemple suivant crée une fonction « taxes », qui retourne le montant de taxes à
payer sur un montant qu’elle reçoit en paramètres.

Appel d’une fonction à partir d’une requête SQL

Appel d’une fonction en dehors de requête SQL

7
Exercice
Créer une fonction T-SQL qui retourne le prix unitaire minimal pour une catégorie de produits donnée
(on passe un paramètre categorieID)

Vous aimerez peut-être aussi