Creare funzioni nominate e dichiarare variabili
Ora che hai visto in azione una potente funzione di debug, creiamone una tua. Per iniziare, definisci la firma della funzione indicando il nome, gli eventuali parametri e il tipo di ritorno. Da quel punto in poi, è uguale a una funzione DO.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in PostgreSQL
Istruzioni dell'esercizio
- Definisci una funzione chiamata
debug_statementche accetti un'istruzione SQL comesql_stmt. - Il tipo di ritorno della funzione deve essere
BOOLEAN. - La funzione deve eseguire l'istruzione SQL fornita e intercettare qualsiasi eccezione.
- La funzione deve restituire
Truese attiva il debugging eFalsein caso contrario.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- 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);')