Module 12 : Implémentation de procédures stockées
Présentation des procédures stockées Création, exécution et modification des procédures stockées Utilisation de paramètres dans les procédures stockées Exécution de procédures stockées étendues Traitement des messages d'erreur Performances Vue d'ensemble
Définition des procédures stockées Traitement initial des procédures stockées Traitement ultérieur des procédures stockées Avantages des procédures stockées Présentation des procédures stockées
Définition des procédures stockées Ensembles nommés d'instructions Transact-SQL Méthode permettant d'encapsuler les tâches répétitives Cinq types (système, locales, temporaires, distantes et étendues) Acceptation des paramètres d'entrée et des valeurs de renvoi Renvoi d'une valeur d'état de réussite ou d'échec
Traitement initial des procédures stockées Entrées dans les tables sysobjects et syscomments Entrées dans les tables sysobjects et syscomments Plan compilé en cache de procédure Plan compilé en cache de procédure Compilation Optimisation CréationCréation Exécution (première fois ou recompilation) recompilation) Analyse
Traitement ultérieur des procédures stockées Plan d'exécution extrait Élimination des plans inutilisés Plan de requêteContexte d'exécution SELECT * FROM dbo.member WHERE member_no = ? Connexion Connexion 2 Connexion
Avantages des procédures stockées Partagent une logique d'application Protègent les détails du schéma de la base de données Fournissent des mécanismes de sécurité Améliorent les performances Réduisent le trafic sur le réseau
Création, exécution et modification des procédures stockées Création de procédures stockées Instructions pour la création de procédures stockées Exécution de procédures stockées Modification et suppression de procédures stockées
Création de procédures stockées Création dans la base de données actuelle à l'aide de l'instruction CREATE PROCEDURE Jusqu'à 32 niveaux d'imbrication Utilisation de sp_help pour afficher des informations Use library GO CREATE PROC dbo.overdue_books AS SELECT * FROM dbo.loan WHERE due_date < GETDATE() GO
Instructions pour la création de procédures stockées L'utilisateur dbo doit être propriétaire de tous les objets d'une base de données Une tâche par procédure stockée Créez, testez et déboguez la procédure stockée sur le serveur Évitez le préfixe sp_ dans les noms de procédures stockées Utilisez les mêmes paramètres de connexion pour toutes les procédures stockées Limitez l'utilisation des procédures stockées temporaires Ne supprimez jamais directement d'entrées dans la table système syscomments
Exécution de procédures stockées Exécution d'une procédure stockée en tant que telle Exécution d'une procédure stockée au sein d'une instruction INSERT EXEC overdue_books INSERT INTO customers EXEC employee_customer
Modification et suppression de procédures stockées Modification des procédures stockées Incluez toute option dans ALTER PROCEDURE N'affecte pas les procédures stockées imbriquées Suppression des procédures stockées ALTER PROC overdue_books AS SELECT CONVERT(char(8), due_date, 1) date_due, isbn, copy_no, SUBSTRING(title, 1, 30)title, member_no, lastname FROM OverdueView ORDER BY due_date ALTER PROC overdue_books AS SELECT CONVERT(char(8), due_date, 1) date_due, isbn, copy_no, SUBSTRING(title, 1, 30)title, member_no, lastname FROM OverdueView ORDER BY due_date
Atelier 12.1 : Création de procédures stockées
Utilisation de paramètres dans les procédures stockées Utilisation des paramètres d'entrée Exécution de procédures stockées avec des paramètres d'entrée Renvoi de valeurs avec des paramètres de sortie Recompilation explicite de procédures stockées
Utilisation des paramètres d'entrée Identifiez d'abord les valeurs manquantes ou invalides Définissez des valeurs par défaut appropriées CREATE PROC longstring = char(8) = 'Anglais' AS is null BEGIN PRINT "Veuillez spécifier un titre (complet ou partiel) et la langue" PRINT "find_isbn 'Oliver%', 'Japonais'"... CREATE PROC longstring = char(8) = 'Anglais' AS is null BEGIN PRINT "Veuillez spécifier un titre (complet ou partiel) et la langue" PRINT "find_isbn 'Oliver%', 'Japonais'"...
Exécution de procédures stockées avec des paramètres d'entrée Transmission de valeurs par référence Transmission de valeurs par position EXEC addadult 'LaBrie', 'Linda', null, 'Dogwood Drive', 'Sacramento', 'CA', '94203', null EXEC = = = 'Dogwood = = = '94203' EXEC = = = 'Dogwood = = = '94203'
Renvoi de valeurs avec des paramètres de sortie CREATE PROCEDURE smallint OUTPUT AS smallint EXECUTE mathtutor 5, OUTPUT SELECT 'Le résultat est : Le résultat est : 30 CREATE PROCEDURE smallint OUTPUT AS smallint EXECUTE mathtutor 5, OUTPUT SELECT 'Le résultat est : Le résultat est : 30 Résultats de la procédure stockée Résultats de la procédure stockée Exécution de la procédure stockée Exécution de la procédure stockée Création de la procédure stockée Création de la procédure stockée
Recompilation explicite de procédures stockées Recompilez lorsque Les procédures stockées renvoient des jeux de résultats extrêmement variés Un nouvel index est ajouté dans une table sous-jacente La valeur du paramètre est atypique Recompilez à l'aide des instructions CREATE PROCEDURE [WITH RECOMPILE] EXECUTE [WITH RECOMPILE] sp_recompile
Exécution de procédures stockées étendues Sont programmées à l'aide de l'API ODS Peuvent inclure des fonctions C et C++ Peuvent contenir plusieurs fonctions Peuvent être appelées à partir d'un client ou de SQL Server Ne peuvent être ajoutées que dans la base master EXEC master..xp_cmdshell 'dir c:\mssql7'
Traitement des messages d'erreur L'instruction RETURN permet de quitter sans conditions une requête ou une procédure La procédure sp_addmessage crée des messages d'erreur personnalisés La fonction système contient le numéro d'erreur de la dernière instruction Transact-SQL exécutée L'instruction RAISERROR Renvoie un message d'erreur défini par l'utilisateur Définit un indicateur système pour consigner l'erreur
Démonstration : Traitement des messages d'erreur
Performances Utilisez l'Analyseur de performances SQL Server SQL Server : Gestionnaire de cache Statistiques de SQL Utilisez le Générateur de profils SQL Server Pour surveiller les événements Pour tester chaque instruction d'une procédure stockée
Conseils pratiques Concevez une procédure stockée par tâche Effectuez la vérification d'erreur des tâches et de la logique d'entreprise avant de commencer les transactions Vérifiez tous les paramètres d'entrée au début de chaque procédure stockée Vérifiez tous les paramètres d'entrée au début de chaque procédure stockée Utilisez les mêmes paramètres de connexion pour toutes les procédures stockées Pour dissimuler le texte des procédures stockées, activez l'option WITH ENCRYPTION
Atelier 12.2 : Création de procédures stockées avec des paramètres
Contrôle des acquis Présentation des procédures stockées Création, exécution et modification des procédures stockées Utilisation de paramètres dans les procédures stockées Exécution de procédures stockées étendues Traitement des messages d'erreur Performances