Membuat fungsi bernama dan mendeklarasikan variabel
Sekarang setelah Anda melihat fungsi debugging yang kuat digunakan, mari buat milik Anda sendiri. Mulailah dengan mendefinisikan tanda tangan fungsi yang memasok nama fungsi, parameter (jika ada), dan tipe nilai kembali. Setelah itu, sisanya sama seperti fungsi DO.
Latihan ini adalah bagian dari kursus
Transaksi dan Penanganan Error di PostgreSQL
Petunjuk latihan
- Definisikan sebuah fungsi bernama
debug_statementyang menerima sebuah pernyataan SQL sebagaisql_stmt. - Tipe nilai kembali fungsi harus
BOOLEAN. - Fungsi harus mengeksekusi pernyataan SQL yang diberikan dan menangkap pengecualian apa pun.
- Fungsi harus mengembalikan
Truejika memicu debugging danFalsejika tidak.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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);')