2010-01-21 6 views
5

Je suis en train d'examiner les procédures stockées pour le moment.[MySQL]: procédures stockées et instructions de sélection

Selon this article (page 8) dans la section dev du site mysql ...

Ordinairement, ce n'est pas normal de mettre instructions SELECT dans les procédures stockées, ceci est pour illustration. J'ai décidé que certaines procédures devraient simplement sélectionner dans notre tableau, de sorte que lorsque vous appelez la procédure, il sera évident que cela fonctionne.

Pourquoi est-ce?

Est-ce que l'utilisation de procédures stockées simplifie les instructions de sélection compliquées et non les «meilleures pratiques»?

Dans quelles situations spécifiques est-il avantageux d'utiliser une procédure stockée? Exemple?

Répondre

3

Les procédures généralement stockées sont destinées à un traitement complexe dans la base de données. Il y a des débats qui font rage au sujet de leurs avantages. Je n'ai jamais vu que SELECTs dans une procédure stockée était une mauvaise chose, mais je ne m'attendrais pas à ce que chaque instruction SQL qui doit être écrite entre dans une procédure stockée non plus. Elle doit être réservée aux traitements impliquant plusieurs instructions et devra être répétée.

Jeff a une diatribe à leur sujet here.

Pour répondre à votre question directe pour des exemples spécifiques, j'ai constaté que je les évite en raison du problème de portabilité. Je tente de faire tout mon côté de l'application de traitement. En même temps, je n'ai pas à m'inquiéter de la bande passante du réseau dans mon application, donc chaque situation est différente.

+0

J'avais l'impression que de procédure stockée où plus portable que d'une requête axée sur la demande. Dans la mesure où vous pouvez séparer votre logique de requête de l'application. –

+0

Mais ils sont écrits dans la langue du SGBD. Les procédures stockées de SQL Server sont écrites dans T-SQL et Oracle dans PL/SQL, etc. Vous ne pouvez pas déplacer la base de données d'une plateforme à l'autre. Pour certaines organisations, ce n'est pas un gros problème, mais pour d'autres ... –

+0

définitivement vrai ... La portabilité d'un système DB à l'autre est risquée. Le pdf que j'ai lié décrit quelques-unes des syntaxes/caractéristiques spécifiques à mysql (ainsi que plusieurs autres conventions) que vous devriez éviter afin de maintenir les problèmes de compatibilité sur les DB non basées sur mysql. MAIS, si je ne me trompe pas, les procédures stockées facilitent la portabilité d'une langue à l'autre. –

3

Une situation spécifique où il est utile d'utiliser des procédures stockées/routines est qu'il peut fournir une vérification d'erreur sur des paramètres similaires aux fonctions dans le paradigme OO. Il a ajouté donne « Encapsulation »

Un exemple simple:

CREATE PROCEDURE select_table(IN @id INT) 
BEGIN 
    IF @id < O THEN 
    -- ERROR! do something here 
    ELSEIF 
    SELECT * from TABLE WHERE id = @id; 
    END IF 
END 
+0

noté. Définitivement une fonctionnalité très puissante. –

Questions connexes