Procédure stockée
Un article de Wikipédia, l'encyclopédie libre.
|
Cet article est une ébauche concernant l’informatique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
|
Une procédure stockée (ou stored procedure en anglais) est un ensemble d'instructions SQL pré-compilées, stockées sur le serveur, directement dans la base de données. Elles peuvent être exécutées sur demande : lancées par un utilisateur, un administrateur DBA ou encore de façon automatisée par un événement déclencheur (de l'anglais "trigger").
Il existe des procédures stockées pour ce qui est de la manipulation de données comme pour le 'tuning de base'.
Sommaire |
[modifier] Fonctionnement
Les requêtes envoyées à un serveur SQL font l'objet d'une 'analyse syntaxique' puis d'une interprétation avant d'être exécutées. Ces étapes sont très lourdes si l'on envoie plusieurs requêtes complexes.
Les procédures stockées répondent à ce problème : une requête n'est envoyée qu'une unique fois sur le réseau puis analysée, interprétée et stockée sur le serveur sous forme exécutable (pré-compilée). Pour qu'elle soit exécutée, le client n'a qu'à envoyer une requête comportant le nom de la procédure stockée.
On peut ainsi passer des paramètres à une procédure stockée lors de son appel, et recevoir le résultat de ses opérations comme celui de toute requête SQL.
[modifier] Intérêts
- simplification : code plus simple à comprendre[1]
- rapidité : moins d'informations sont échangées entre le serveur et le client
- performance : économise au serveur l'interprétation de la requête car elle est précompilée[2]
- sécurité : les applications et les utilisateurs n'ont aucun accès direct aux tables, mais passent par des procédures stockées prédéfinies
[modifier] Syntaxe
Création de la procédure stockée sous SQL Server:
CREATE PROCEDURE [PROC_Nom] @parametre1 son_type, @parametre2 son_type, @parametre3 son_type AS DECLARE @ma_variable son_type SELECT nom_champ FROM ma_table WHERE condition
Exécution de la procédure stockée :
EXECUTE [PROC_Nom] parametre1, parametre2, parametre3
[modifier] Exemple
Code PL/SQL (PostgreSQL) pour la création d'une procédure stockée générant un identifiant pour un nouvel utilisateur :
CREATE FUNCTION genererIdUser() RETURNS OPAQUE AS
DECLARE
iduser integer;
BEGIN
SELECT INTO iduser MAX(id_user) FROM user;
IF iduser ISNULL THEN
iduser := 0;
END IF;
NEW.id_user := iduser + 1;
RETURN NEW;
END;
LANGUAGE 'plpgsql';
Code pour appeler la procédure stockée :
EXECUTE PROCEDURE genererIdUser()

