Maison > base de données > tutoriel mysql > Que sont les procédures stockées ?

Que sont les procédures stockées ?

Mary-Kate Olsen
Libérer: 2024-10-22 21:00:03
original
449 Les gens l'ont consulté

SQL (Structured Query Language) est un langage standard de gestion et d'exploitation de bases de données relationnelles. L'une de ses fonctionnalités puissantes et couramment utilisées est la procédure stockée. Une procédure stockée est un ensemble d'instructions SQL précompilées et stockées dans la base de données et pouvant accepter des paramètres d'entrée, effectuer des opérations et renvoyer des résultats. Explorons ce qu'est une procédure stockée et comment en créer une.

What Are Stored Procedures?

Introduction aux procédures stockées

Les procédures stockées peuvent sembler un terme complexe, mais elles constituent la base d'une gestion efficace des bases de données. Commençons par sa définition.

Qu'est-ce qu'une procédure stockée ?

Une procédure stockée est une série d'instructions SQL prédéfinies et stockées sur le serveur de base de données. Lorsque vous devez effectuer ces opérations, vous pouvez les exécuter en appelant le nom de la procédure stockée au lieu d'envoyer plusieurs commandes de requête distinctes.

Voici un exemple simplifié montrant comment créer une procédure stockée simple dans SQL Server :

CREATE PROCEDURE procedure_name
AS
BEGIN
   -- SQL statements
END
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Voici quelques-uns des composants clés d'une procédure stockée :

  • Paramètres d'entrée : Ce sont des valeurs transmises à une procédure stockée depuis l'extérieur pour personnaliser le comportement de la procédure stockée. Les paramètres d'entrée permettent à une procédure stockée d'effectuer différentes actions en fonction de différentes conditions.
  • Paramètres de sortie : Semblables aux paramètres d'entrée, les paramètres de sortie font également partie d'une procédure stockée, mais leur rôle est de renvoyer des valeurs à l'appelant plutôt que de recevoir des valeurs.
  • Variables locales : Ce sont des variables déclarées dans une procédure stockée et sont utilisées pour stocker des résultats intermédiaires ou des valeurs calculées lors de l'exécution. Les variables locales ne sont visibles que dans le contexte d'une procédure stockée et peuvent être attribuées plusieurs fois au cours de sa durée de vie.
  • Instructions SQL : elles constituent la logique de base d'une procédure stockée, y compris, mais sans s'y limiter, l'interrogation, l'insertion, la mise à jour et la suppression de données.

Ces composants fonctionnent ensemble pour faire des procédures stockées un moyen réutilisable et efficace d'effectuer des opérations de base de données. En encapsulant les tâches courantes de base de données dans des procédures stockées, vous pouvez simplifier le développement d'applications tout en améliorant les performances et la sécurité.

What Are Stored Procedures?

Comment fonctionnent les procédures stockées

Les procédures stockées sont exécutées à l'intérieur du serveur de base de données, ce qui signifie qu'elles peuvent effectuer des opérations plus efficacement et s'exécuter plus rapidement que si plusieurs requêtes étaient envoyées l'une après l'autre depuis le client. De plus, l'utilisation de procédures stockées peut réduire considérablement le trafic réseau, car seul l'ensemble de résultats final doit être transféré du serveur au client, plutôt que les résultats de chaque requête individuelle dans les deux sens. De cette façon, cela améliore non seulement la vitesse de traitement des données, mais réduit également l'utilisation de la bande passante du réseau.

Rôle dans la gestion de base de données

Les procédures stockées jouent un rôle central dans la gestion des bases de données car elles stockent de manière centralisée la logique métier sur le serveur de base de données. Cela garantit que les opérations critiques sont toujours effectuées de manière cohérente, sécurisée et efficace. Plus précisément, les procédures stockées aident :

  • Maintenir l'intégrité des données : en garantissant que toutes les opérations sur les données suivent des règles et des contraintes prédéterminées, les procédures stockées aident à maintenir l'intégrité et la cohérence des données.
  • Application de la logique métier : l'encapsulation de règles métier complexes dans des procédures stockées garantit que ces règles sont strictement appliquées et ne seront pas affectées par les modifications du code client.
  • Simplification de l'interaction avec la base de données : en fournissant une interface qui encapsule les opérations complexes, les procédures stockées réduisent la complexité de l'interaction application-base de données, facilitant ainsi le développement et la maintenance.

Avantages de l'utilisation de procédures stockées

L'utilisation de procédures stockées présente plusieurs avantages clés :

  1. Performances améliorées :
  • Les procédures stockées précompilées s'exécutent plus rapidement.
  • Vitesse de réponse améliorée et utilisation plus efficace des ressources du serveur.
  1. Réutilisabilité et maintenabilité :
  • Les procédures stockées peuvent être appelées plusieurs fois pour réduire la duplication de code.
  • Les mises à jour des procédures stockées prendront effet partout où elles sont utilisées, garantissant ainsi la cohérence et réduisant les erreurs.
  1. Sécurité des données :
  • Contrôlez l'accès à la base de données et limitez la possibilité d'exploiter directement les tables.
  • Fournir une couche de sécurité via des procédures stockées pour empêcher les accès non autorisés et les attaques malveillantes.

Commandes courantes utilisées avec les procédures stockées

Examinons maintenant les commandes utiles associées aux procédures stockées.

CRÉER UNE PROCÉDURE

Comme mentionné précédemment, cette commande est utilisée pour définir une nouvelle procédure stockée dans la base de données. Voici un exemple de procédure stockée utilisant cette fonction :

Supposons que nous ayons un tableau appelé « Employés » avec les colonnes suivantes :

  • ID d'employé
  • Prénom
  • Nom
  • ID du département
  • Salaire

Nous souhaitons créer une procédure stockée pour récupérer tous les employés appartenant à un service spécifique.

CREATE PROCEDURE procedure_name
AS
BEGIN
   -- SQL statements
END
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

EXÉCUTIF

Cette commande est utilisée pour exécuter une procédure stockée. Il peut également être utilisé pour transmettre des paramètres d’entrée et de sortie. Pour notre exemple précédent, la commande "EXEC" ressemblerait à ceci :

CREATE PROCEDURE GetEmployeesByDepartment
   @DepartmentID INT
AS
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = @DepartmentID;
END;
Copier après la connexion
Copier après la connexion

MODIFIER LA PROCÉDURE

Cette commande vous permet de modifier une procédure stockée existante sans la supprimer ni la recréer. En reprenant l'exemple précédent, si nous souhaitons modifier la procédure stockée nommée "GetEmployeesByDepartment" pour ajouter un filtre de salaire supplémentaire, c'est-à-dire que nous souhaitons récupérer des informations sur les employés d'un service spécifique dont le salaire est supérieur à un certain montant.

Voici un exemple :

EXEC GetEmployeesByDepartment @DepartmentID = 1;
Copier après la connexion
Copier après la connexion

PROCÉDURE DE CHUTE

Si une procédure stockée n'est plus nécessaire, vous pouvez la supprimer de la base de données à l'aide de la commande DROP PROCEDURE.

ALTER PROCEDURE GetEmployeesByDepartment
   @DepartmentID INT,
   @MinSalary DECIMAL(10, 2)
AS
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = @DepartmentID AND Salary > @MinSalary;
END;
Copier après la connexion
Copier après la connexion

Comment créer et utiliser des procédures stockées

Nous examinerons la création et l'utilisation de procédures stockées dans trois domaines :

  • MySQL
  • SQL Serveur
  • Oracle

MySQL

Créer des procédures stockées dans MySQL est assez simple. Vous définissez la procédure, spécifiez les paramètres et écrivez du code SQL à l'aide de l'instruction "CREATE PROCEDURE".

Vous pouvez faire ceci :

Étape 1 : Créer une table des employés

Tout d'abord, créons un exemple de tableau des employés à remplir avec les données que nous allons utiliser.

DROP PROCEDURE GetEmployeesByDepartment
Copier après la connexion
Copier après la connexion

Étape 2 : Insérer des exemples de données

Insérez quelques exemples de données dans la table Employés.

CREATE TABLE Employees (
   EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
   FirstName VARCHAR(50),
   LastName VARCHAR(50),
   DepartmentID INT,
   Salary DECIMAL(10, 2)
);
Copier après la connexion
Copier après la connexion

Étape 3 : Créer une procédure stockée

Créons une procédure stockée pour récupérer les employés en fonction de leur service.

INSERT INTO Employees (FirstName, LastName, DepartmentID, Salary)
VALUES
('John', 'Doe', 1, 60000),
('Jane', 'Smith', 2, 65000),
('Sam', 'Brown', 1, 62000),
('Sue', 'Green', 3, 67000);
Copier après la connexion
Copier après la connexion

What Are Stored Procedures?

Étape 4 : Appeler la procédure stockée

Pour appeler la procédure stockée et récupérer les employés d'un service spécifique, utilisez l'instruction CALL.

CREATE PROCEDURE GetEmployeesByDepartment(IN depID INT)
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = depID;
END;
Copier après la connexion
Copier après la connexion

What Are Stored Procedures?

Serveur SQL

Dans SQL Server, la création et l'exécution de procédures stockées sont légèrement différentes, mais pas radicalement modifiées. Voici un exemple :

Étape 1 : Créer la table des employés

Tout d'abord, créons un exemple de tableau Employés.

CALL GetEmployeesByDepartment(1);
Copier après la connexion

Étape 2 : Insérer des exemples de données

Ensuite, nous insérerons quelques exemples de données dans la table Employés.

CREATE PROCEDURE procedure_name
AS
BEGIN
   -- SQL statements
END
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étape 3 : Créer une procédure stockée

Créons une procédure stockée pour récupérer les employés en fonction de leur service.

CREATE PROCEDURE GetEmployeesByDepartment
   @DepartmentID INT
AS
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = @DepartmentID;
END;
Copier après la connexion
Copier après la connexion

What Are Stored Procedures?

Étape 4 : Exécuter la procédure stockée

Pour exécuter la procédure stockée et récupérer les employés d'un service spécifique, utilisez l'instruction EXEC.

EXEC GetEmployeesByDepartment @DepartmentID = 1;
Copier après la connexion
Copier après la connexion

What Are Stored Procedures?

Oracle

Oracle prend également en charge les procédures stockées. Voici un guide étape par étape sur la façon de les implémenter dans Oracle à l'aide de SQL.

Étape 1 : Créer une table des employés

Tout d'abord, créons un exemple de tableau Employés.

ALTER PROCEDURE GetEmployeesByDepartment
   @DepartmentID INT,
   @MinSalary DECIMAL(10, 2)
AS
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = @DepartmentID AND Salary > @MinSalary;
END;
Copier après la connexion
Copier après la connexion

Étape 2 : Insérer des exemples de données

Ensuite, nous insérons quelques exemples de données dans la table des employés pour créer un ensemble de données.

DROP PROCEDURE GetEmployeesByDepartment
Copier après la connexion
Copier après la connexion

Étape 3 : Créer une procédure stockée

Créons une procédure stockée pour récupérer les employés en fonction de leur service.

CREATE TABLE Employees (
   EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
   FirstName VARCHAR(50),
   LastName VARCHAR(50),
   DepartmentID INT,
   Salary DECIMAL(10, 2)
);
Copier après la connexion
Copier après la connexion

What Are Stored Procedures?

Concevoir des procédures stockées : bonnes pratiques

Après avoir terminé cette introduction pratique, examinons quelques bonnes pratiques pour la conception de procédures stockées.

Utiliser des requêtes paramétrées

Les requêtes paramétrées dans les procédures stockées aident à prévenir les attaques par injection SQL. Utilisez toujours des paramètres au lieu de concaténer les entrées de l'utilisateur directement dans des instructions SQL.

Par exemple, n'utilisez pas ceci :

INSERT INTO Employees (FirstName, LastName, DepartmentID, Salary)
VALUES
('John', 'Doe', 1, 60000),
('Jane', 'Smith', 2, 65000),
('Sam', 'Brown', 1, 62000),
('Sue', 'Green', 3, 67000);
Copier après la connexion
Copier après la connexion

Utilisez ceci :

CREATE PROCEDURE GetEmployeesByDepartment(IN depID INT)
BEGIN
   SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary
   FROM Employees
   WHERE DepartmentID = depID;
END;
Copier après la connexion
Copier après la connexion

Limiter l'accès aux tables sous-jacentes

Comme mentionné précédemment, les procédures stockées peuvent agir comme une couche de sécurité en limitant l'accès direct aux tables sous-jacentes. Cela réduit le risque d’exposition de données sensibles.

Optimiser le code SQL

Pour garantir que les procédures stockées s'exécutent efficacement, elles doivent être optimisées en termes de performances. Cela signifie réduire les calculs inutiles et faire bon usage des index. Vous pouvez améliorer l'efficacité des requêtes en analysant le plan d'exécution des requêtes pour identifier et résoudre les goulots d'étranglement des performances.

Par exemple, vous devez éviter d'utiliser "SELECT *" pour récupérer tous les champs d'une table car cela augmente la quantité de données transférées et réduit l'efficacité. Au lieu de cela, vous devez sélectionner uniquement les champs dont vous avez besoin pour restreindre la portée de la récupération des données afin d'améliorer les performances.

Documentez vos procédures stockées

Le code de documentation s'applique également à l'écriture de procédures stockées. Ceci est essentiel pour que les autres développeurs comprennent le rôle et la fonction de chaque procédure. Il favorise également des conventions de dénomination et des styles de codage cohérents.

Ce processus peut être réalisé en ajoutant des commentaires aux procédures stockées ou en conservant une documentation séparée. Par exemple :

CREATE PROCEDURE procedure_name
AS
BEGIN
   -- SQL statements
END
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Maintenir le contrôle des versions

Le contrôle de version est essentiel pour gérer et suivre les modifications apportées aux procédures stockées. Il est utile de conserver un référentiel contenant l'historique complet des modifications apportées aux scripts de procédures stockées et à leur documentation. Cela facilite non seulement le suivi de toutes les modifications, mais garantit également la cohérence entre les différents environnements de déploiement.

Réflexions finales

Les procédures stockées sont un moyen efficace et sécurisé de gestion de bases de données. Ils offrent un certain nombre d'avantages qui, lorsqu'ils sont utilisés avec les bonnes pratiques, peuvent augmenter considérablement l'efficience et l'efficacité de l'analyse des données au sein d'une organisation.


Communauté

Aller sur le site Chat2DB
? Rejoignez la communauté Chat2DB
? Suivez-nous sur X
? Retrouvez-nous sur Discord

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal