代码之家  ›  专栏  ›  技术社区  ›  Himanshu sharma

如何在postgres中处理全局异常?

  •  3
  • Himanshu sharma  · 技术社区  · 8 年前

    我在postgres中有搜索异常处理程序,它说要添加

    DECLARE
      text_var1 text;
      text_var2 text;
      text_var3 text;
    BEGIN
      -- some processing which might cause an exception
      ...
    EXCEPTION WHEN OTHERS THEN
      GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
                              text_var2 = PG_EXCEPTION_DETAIL,
                              text_var3 = PG_EXCEPTION_HINT;
    -- call a function which log all this variable perform log_function (text_var1 ,text_var2 , text_var3 );
    END;
    

    如果我对每个函数都这样做,这是有效的吗?

    这种方法有没有性能不足?

    我们不能为所有函数都设置一个全局异常处理程序吗?在这种方法中,我为每个函数添加了异常处理程序。

    然后将它们保存在变量中,并为此保存日志。我们可以有任何全局错误处理程序吗?

    编辑

    1) 在all函数中写入GET STACKED块(如果我有20个函数,那么我在all函数中写入此块)

    2) 然后记录在表中。

    我想要的是在postgres中应该有全局异常处理程序的机制,这样我就不必在postgres中为所有函数编写GET-STACKED异常块

    1 回复  |  直到 8 年前
        1
  •  1
  •   Laurenz Albe    8 年前

    EXCEPTION the documentation of error trapping .

    无法自动处理PL/pgSQL函数中的所有顶级异常。