编写Postgres函数时,“执行不存在”

时间:2018-11-29 13:43:45

标签: sql postgresql function

我正在研究一个函数,如果昨天至少写了一个条目,该函数应该查找一些表。无论如何,应将TRUE或FALSE写入另一个表:

  CREATE OR REPLACE FUNCTION SANDBOX.MY_FUNCTION(MY_TABLE regclass, DATE_DIFF INTEGER)
    RETURNS void AS $$
 DECLARE
RESULT BOOLEAN;
 BEGIN
      RESULT :=
      EXECUTE 'EXISTS
      (SELECT DATE FROM ' || MY_TABLE ||
       ' WHERE DATE = CURRENT_DATE -DATE_DIFF
       LIMIT 1)';
      INSERT INTO SANDBOX.UPDATED_TODAY VALUES (MY_TABLE, CURRENT_DATE, RESULT);
    END;
    $$ LANGUAGE plpgsql;

但是,我得到

[42704]ERROR: type "execute does not exist"

这是我的函数调用:

SELECT SANDBOX.MY_FUNCTION('datawarehouse_a.table_2', 1);

有人可以帮忙吗? 提前致谢! :-)

如果您对第二个参数感到好奇:对于某些表,我正在查看是否有一个不是昨天而是2天前的条目。

1 个答案:

答案 0 :(得分:2)

EXECUTE不会返回这样的结果。您需要EXECUTE INTO才能将结果转换为变量:

DO $$
DECLARE
        result BOOLEAN;
BEGIN
        EXECUTE 'SELECT EXISTS (SELECT 1 FROM generate_series(1, 10))'
        INTO result;

        RAISE NOTICE '%', result;
END $$

打印:NOTICE: t