Procédures et fonctions stockées

CREATE PROCEDURE et CREATE FUNCTION, les modes de paramètres IN, OUT et INOUT, RETURN, l'appel par CALL ou dans un SELECT, et ce que gagne et coûte un traitement placé dans la base.

  • 28 cartes
  • 6 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Sur le schéma
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • Procédure stockée : de quoi s'agit-il ?

    Voir la réponse

    Traitement nommé, enregistré dans la base et lancé par CALL ; il ne rend pas de valeur dans une expression et peut valider ou annuler la transaction (COMMIT, ROLLBACK).

    Elle convient aux actions : archiver, purger, recalculer. On ne peut pas l'écrire dans un SELECT ni dans un WHERE.

  • Que montre ce bloc ?

    ```sql
    CREATE PROCEDURE doubler(INOUT x integer)
    LANGUAGE plpgsql AS $$
    BEGIN
    x := x * 2;
    END $$;

    DO $$
    DECLARE
    v integer := 4;
    BEGIN
    CALL doubler(v);
    CALL doubler(v);
    RAISE NOTICE 'v = %', v;
    END $$;
    `

    • v = 16
    • v = 8
    • v = 4
    • v = <NULL>
    Voir la réponse

    v = 16

    INOUT rend la valeur modifiée à la variable de l'appelant : 4 devient 8 au premier appel, puis 16 au second. 8 supposerait que le second appel n'agit pas, 4 que rien ne revient.

  • Une fonction déclare le type de sa valeur avec … et la rend avec …, comme dans RETURNS numeric puis RETURN prix * 1.2;.

    Voir la réponse

    Une fonction déclare le type de sa valeur avec RETURNS et la rend avec RETURN, comme dans RETURNS numeric puis RETURN prix * 1.2;.

    RETURNS (avec S) fait partie de l'en-tête et donne le type ; RETURN (sans S) est une instruction du corps qui termine la fonction avec une valeur.

  • Fonction stockée : de quoi s'agit-il ?

    Voir la réponse

    Traitement nommé, enregistré dans la base, qui rend une valeur et s'emploie donc dans une expression SQL : dans un SELECT, un WHERE ou un ORDER BY.

    Elle convient aux calculs : SELECT nom, prix_ttc(prix) FROM produit l'applique à chaque ligne. Elle ne peut pas valider la transaction en cours.