Programmation Structurée en T-SQL
Programmation Structurée en T-SQL
Programmation Structurée en T-SQL
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
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
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
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.
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.
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)