Tạo hàm có tên và khai báo biến
Giờ bạn đã thấy một hàm gỡ lỗi mạnh mẽ hoạt động như thế nào, hãy tự xây dựng một hàm của riêng bạn. Trước hết, hãy xác định chữ ký hàm (function signature) gồm tên hàm, các tham số (nếu có), và kiểu trả về. Sau đó, phần còn lại giống như một hàm DO.
Bài tập này là một phần của khóa học
Giao dịch và Xử lý Lỗi trong PostgreSQL
Hướng dẫn bài tập
- Định nghĩa một hàm tên
debug_statementnhận một câu lệnh SQL dưới tên tham sốsql_stmt. - Kiểu trả về của hàm là
BOOLEAN. - Hàm cần thực thi câu lệnh SQL được cung cấp và bắt mọi ngoại lệ.
- Hàm trả về
Truenếu nó kích hoạt quá trình gỡ lỗi vàFalsenếu không.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- 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);')