CommencerCommencer gratuitement

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

Maintenant que vous avez vu une puissante fonction de débogage en action, construisons la vôtre. Commencez par définir la signature de la fonction, qui fournit le nom, d’éventuels paramètres et le type de retour. À partir de là, c’est identique à une fonction DO.

Cet exercice fait partie du cours

Transactions et gestion des erreurs dans PostgreSQL

Afficher le cours

Instructions

  • Définissez une fonction nommée debug_statement qui prend une instruction SQL sous le nom sql_stmt.
  • Le type de retour de la fonction doit être BOOLEAN.
  • La fonction doit exécuter l’instruction SQL fournie et intercepter toute exception.
  • La fonction doit renvoyer True si elle déclenche le débogage et False sinon.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

-- 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