我是新使用PostgreSQL,我正在寻找更多关于错误的信息,例如,如果我运行以下命令:
select top 10 * from TABLE
我得到这个错误:
ERROR: syntax error at or near "10"
LINE 2: select top 10 * from TABLE
^
SQL state: 42601
Character: 13
我期待得到更多的东西。所以,我已经尝试了这个从这里https://www.postgresql.org/docs/current/plpgsql-control-structures.html#PLPGSQL-EXCEPTION-DIAGNOSTICS-VALUES,但不工作(或者我不知道如何使用它):
DECLARE
text_var1 text;
text_var2 text;
text_var3 text;
BEGIN
SELECT TOP 10 * FROM tbl; -- obviously incorrect
EXCEPTION WHEN OTHERS THEN
GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
text_var2 = PG_EXCEPTION_DETAIL,
text_var3 = PG_EXCEPTION_HINT;
END;
1条答案
按热度按时间58wvjzkj1#
PL/pgSQL代码块的问题在于,它在进行表面语法检查时就失败了,甚至在执行任何代码 * 之前 * 就已经引发了异常。
要运行测试,您可以使用
EXECUTE
中的动态SQL代码偷偷地让已损坏的语句通过表面语法检查,然后实际执行该语句并引发预期错误,您可以使用EXCEPTION
子句捕获该错误。例如:也就是说,除了从显示的原始错误消息中看到的内容外,您不会了解到更多信息。