1

我在这里有一个 plpgsql 函数来指示在以下期间是否出现任何警告ANALYZE

CREATE OR REPLACE FUNCTION analyzeWarning() RETURNS integer AS $$
DECLARE
  warningRaised int;
BEGIN
  warningRaised := 0;
  FOR i IN 1..10
  LOOP
    BEGIN
      ANALYZE;
    EXCEPTION
      WHEN SQLSTATE '01000' THEN return 1;
    END;
  END LOOP;
  RETURN 0;
END;
$$ LANGUAGE plpgsql;

这个函数不断给我语法错误:

ERROR:  syntax error at or near "SQLSTATE"
LINE 11:           WHEN SQLSTATE '01000' THEN return 1;

我不确定我在哪里错过了语法错误。

我的 postgres 版本是 8.2.15。

4

1 回答 1

2

PostgreSQL 8.2.15 是相当老的不受支持的版本。此版本不支持SQLSTATE那里的常量。

但是您的代码不应该适用于任何 PostgreSQL 版本。您不能在 PostgreSQL 中捕获警告或通知。只有异常是可捕获的。

于 2015-10-14T04:33:24.850 回答