CommencezCommencez gratuitement

Créer des fonctions nommées et déclarer des variables

Vous venez de voir une puissante fonction de débogage en action ; créons maintenant la vôtre. Commencez par définir la signature de la fonction, qui précise son nom, ses paramètres et le type de retour. Par la suite, son fonctionnement est le même qu'une fonction DO.

Cette activité fait partie du cours

Transactions et gestion des erreurs dans PostgreSQL

Voir le cours

Instructions de l’exercice

  • Définissez une fonction nommée debug_statement qui prend une instruction SQL en paramètre sql_stmt.
  • Le type de retour de la fonction doit être un BOOLEAN.
  • La fonction doit exécuter l'instruction SQL fournie et intercepter toute exception.
  • La fonction doit retourner True si elle déclenche le débogage et False dans le cas contraire.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

-- Define our function signature
___ ___ ___ ___ debug_statement(
    sql_stmt TEXT
)
-- Declare our return type
___ ___ AS $$
    DECLARE
        exc_state   TEXT;
        exc_msg     TEXT;
        exc_detail  TEXT;
        exc_context TEXT;
    BEGIN
        BEGIN
            -- Execute the statement passed in
            ___ sql_stmt;
        EXCEPTION WHEN others THEN
            GET STACKED DIAGNOSTICS
                exc_state   = RETURNED_SQLSTATE,
                exc_msg     = MESSAGE_TEXT,
                exc_detail  = PG_EXCEPTION_DETAIL,
                exc_context = PG_EXCEPTION_CONTEXT;
            INSERT into errors (msg, state, detail, context) values (exc_msg, exc_state, exc_detail, exc_context);
            -- Return True to indicate the statement was debugged
            ___ ___;
        END;
        -- Return False to indicate the statement was not debugged
        RETURN ___;
    END;
$$ LANGUAGE plpgsql;
SELECT debug_statement('INSERT INTO patients (a1c, glucose, fasting) values (20, 89, TRUE);')
Modifier et exécuter le code