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.
- Notions
- Questions
- Ranger et relier
- Sur le schéma
- Mises en situation
- 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 = 16v = 8v = 4v = <NULL>
Voir la réponse
v = 16INOUT 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 numericpuisRETURN 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 numericpuisRETURN 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 produitl'applique à chaque ligne. Elle ne peut pas valider la transaction en cours.