开始使用免费开始使用

创建具名函数并声明变量

既然您已经看到一个强大的调试函数如何工作,现在来亲自构建一个。先定义函数签名,包括函数名、参数以及返回类型。之后的结构与 DO 函数相同。

本练习是课程的一部分

PostgreSQL 中的事务与错误处理

查看课程

练习说明

  • 定义一个名为 debug_statement 的函数,接收一个 SQL 语句参数 sql_stmt
  • 该函数的返回类型应为 BOOLEAN
  • 函数需要执行传入的 SQL 语句,并捕获任何异常。
  • 若触发调试则返回 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);')
编辑并运行代码