Dans les systèmes de gestion de bases de données relationnelles (SGBDR), divers composants tels que les fonctions, les procédures, les curseurs et les déclencheurs jouent un rôle essentiel rôles dans l’amélioration de la flexibilité et de la fonctionnalité des systèmes de bases de données. Ils permettent aux développeurs de mettre en œuvre une logique métier personnalisée, d'automatiser les tâches répétitives et de gérer les données plus efficacement.
Ce guide fournira une explication complète de ces composants, ainsi que des exemples d'extraits de code pour chacun.
Une fonction en SQL est un programme stocké qui peut accepter des entrées, effectuer des opérations et renvoyer une valeur. C'est similaire à une procédure, mais une fonction doit renvoyer une valeur et elle peut être utilisée dans des requêtes comme n'importe quelle autre expression.
Écrivons une fonction simple qui calcule le carré d'un nombre.
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
Utilisation :
SELECT dbo.SquareNumber(4); -- Output: 16
Cette fonction prend un entier en entrée, calcule son carré et renvoie le résultat.
Une procédure (également appelée procédure stockée) est un ensemble d'instructions SQL qui peuvent être exécutées comme une unité. Les procédures peuvent prendre des paramètres, effectuer des opérations telles que l'insertion, la mise à jour, la suppression et la sélection, et renvoyer plusieurs résultats (mais pas directement une seule valeur comme les fonctions).
Écrivons une procédure pour mettre à jour le salaire d'un employé.
CREATE PROCEDURE dbo.UpdateSalary @EmployeeID INT, @NewSalary DECIMAL AS BEGIN UPDATE Employees SET Salary = @NewSalary WHERE EmployeeID = @EmployeeID; END
Utilisation :
EXEC dbo.UpdateSalary @EmployeeID = 101, @NewSalary = 75000;
Cette procédure prend un EmployeeID et un NewSalary comme entrées, met à jour le salaire de l'employé et ne renvoie aucune valeur.
Un curseur en SQL est un objet de base de données qui vous permet de récupérer et de traiter chaque ligne renvoyée par une requête une à la fois. Ceci est particulièrement utile lorsque vous devez effectuer des opérations ligne par ligne, telles que des mises à jour ou des suppressions, qui ne sont pas facilement gérées dans une seule opération basée sur un ensemble.
Écrivons un exemple en utilisant un curseur pour mettre à jour le salaire de tous les employés de 10 %
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
Explication :
Un déclencheur est un type spécial de procédure stockée qui s'exécute automatiquement (ou se "déclenche") lorsque des événements de base de données spécifiques se produisent, tels que INSERT, UPDATE ou DELETE sur une table. Les déclencheurs sont utiles pour appliquer des règles métier, maintenir l'intégrité des données ou mettre à jour automatiquement les tables associées lorsque des modifications se produisent.
Créons un déclencheur qui met automatiquement à jour la colonne LastModified chaque fois que le salaire d'un employé est mis à jour.
SELECT dbo.SquareNumber(4); -- Output: 16
Explication :
Component | Description | Example Use Case |
---|---|---|
Function | A stored program that returns a single value and can be used in queries. | Calculate the square of a number. |
Procedure | A stored program that can perform multiple actions (insert, update, delete) but does not return a value. | Update an employee’s salary. |
Cursor | A mechanism for iterating over a result set row-by-row, used for operations that cannot be easily expressed in set-based SQL. | Update all employees’ salaries by a fixed percentage. |
Trigger | A stored program that automatically executes when specific database events (INSERT, UPDATE, DELETE) occur. | Automatically update a timestamp column when a record is modified. |
Chacun de ces composants remplit un objectif unique en rendant votre base de données plus flexible, plus maintenable et plus efficace, en particulier dans les environnements de bases de données complexes.
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!