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
Instructions de l’exercice
- Définissez une fonction nommée
debug_statementqui prend une instruction SQL en paramètresql_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
Truesi elle déclenche le débogage etFalsedans 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);')