PL/SQL : Procedural Language for PostgreSQL

0/29

Structure de PL/pgSQL

1/29

Déclarations

2/29

Manipulation de tableaux

3/29

Types composites

4/29

Fonctions et paramètres

CREATE [OR REPLACE] FUNCTION nomFonc([[nom] type]*) RETURNS (type|void) AS $$
...
$$ LANGUAGE plpgsql;

5/29

Instructions simples

6/29

Récupération de résultat depuis un SELECT

7/29

Exécution dynamique de requêtes

8/29

Structures de contrôle simples

9/29

Boucles (1/2)

10/29

Boucles (2/2)

11/29

Gestion des erreurs

12/29

Messages et erreurs

13/29

Les Curseurs (1/4)

14/29

Les Curseurs (2/4)

15/29

Les Curseurs (3/4)

CREATE OR REPLACE FUNCTION fct() RETURNS void AS $$
DECLARE
    rec RECORD;
    curs refcursor;
BEGIN
    EXECUTE 'CREATE TABLE temp (idliv integer, titre varchar(50))';
    OPEN curs FOR SELECT liv_num, liv_titre FROM livre;
    LOOP
        FETCH curs INTO rec;
        EXIT WHEN NOT FOUND;
        INSERT INTO temp VALUES(rec.liv_num,rec.liv_titre);
    END LOOP;
    CLOSE curs;
END;
$$ LANGUAGE plpgsql;

16/29

Les Curseurs (4/4)

CREATE OR REPLACE function fct() RETURNS void AS $$
DECLARE
    rec temp%ROWTYPE;
BEGIN
    execute 'DELETE FROM TEMP';
    FOR rec IN SELECT liv_num, liv_titre from livre LOOP
       INSERT INTO temp VALUES(rec.liv_num,rec.liv_titre);
    END LOOP;
END;
$$ LANGUAGE plpgsql;

17/29

Fonctions tables (en SQL)

18/29

Fonctions tables (en PL/PGSQL)

19/29

Procédures déclenchées (Triggers)

20/29

Paramètres automatiques d'un trigger

21/29

Création et modification des triggers

22/29

Exemples sur la table outlaw

23/29

Trigger avant chaque insertion

24/29

Trigger après toutes les insertions

25/29

Trigger annulant les insertions

26/29

Trigger modifiant les insertions

27/29

Combinaison de Triggers (1/2)

28/29

Combinaison de Triggers (2/2)

29/29