เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสร้างฟังก์ชันที่มีชื่อและการประกาศตัวแปร

หลังจากที่เห็นฟังก์ชันดีบักที่มีประสิทธิภาพในการทำงานจริงแล้ว ถึงเวลาลองสร้างขึ้นมาเองบ้าง เริ่มต้นด้วยการกำหนด function signature ซึ่งประกอบด้วยชื่อฟังก์ชัน พารามิเตอร์ และชนิดของค่าที่คืนกลับ จากนั้นก็เหมือนกับการเขียนฟังก์ชันแบบ DO ทั่วไป

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Transactions and Error Handling in PostgreSQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดฟังก์ชันชื่อ debug_statement ที่รับคำสั่ง SQL เป็นพารามิเตอร์ชื่อ sql_stmt
  • ชนิดของค่าที่ฟังก์ชันคืนกลับควรเป็น BOOLEAN
  • ฟังก์ชันควรรันคำสั่ง SQL ที่ส่งเข้ามา และดักจับ exception ที่อาจเกิดขึ้น
  • ฟังก์ชันควรคืนค่า True หากมีการเรียกใช้การดีบัก และคืนค่า False หากไม่มี

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

-- 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);')
แก้ไขและรันโค้ด