«Выполнить не существует» при написании функции Postgres - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над функцией, которая должна искать некоторые таблицы, если вчера была написана хотя бы одна запись.В любом случае, ИСТИНА или ЛОЖЬ должны быть записаны в другую таблицу:

  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 голосов
/ 29 ноября 2018

EXECUTE не возвращает такой результат.Вам нужно выполнить EXTOUTE INTO, чтобы получить результат в переменную:

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

        RAISE NOTICE '%', result;
END $$

Отпечатки: NOTICE: t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...