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
Instructions
- Définissez une fonction nommée
debug_statementqui prend une instruction SQL sous le nomsql_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
Truesi elle déclenche le débogage etFalsesinon.
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);')