Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Định nghĩa một hàm tên debug_statement nhậ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ề True nếu nó kích hoạt quá trình gỡ lỗi và False nế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);')
Chỉnh sửa và Chạy Mã