ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește o funcție numită debug_statement care primește o instrucțiune SQL ca parametru sql_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 True dacă declanșează depanarea și False dacă 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);')
Editează și rulează codul