Crearea funcțiilor cu nume și declararea variabilelor
Acum că ai văzut o funcție de depanare puternică în acțiune, hai să construiești una proprie. Începe prin definirea semnăturii funcției, care include numele funcției, orice parametri și un tip de returnare. După acest pas, totul funcționează la fel ca o funcție DO.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
- Definește o funcție numită
debug_statementcare primește o instrucțiune SQL ca parametrusql_stmt. - Tipul de returnare al funcției trebuie să fie
BOOLEAN. - Funcția trebuie să execute instrucțiunea SQL furnizată și să prindă orice excepție.
- Funcția trebuie să returneze
Truedacă declanșează depanarea șiFalsedacă nu.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
-- 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);')