это моя функция:
CREATE OR REPLACE FUNCTION SANDBOX.DAILYVERIFY_DATE(TABLE_NAME regclass, DATE_DIFF INTEGER)
RETURNS void AS $$
DECLARE
RESULT BOOLEAN;
DATE DATE;
BEGIN
EXECUTE 'SELECT VORHANDENES_DATUM AS DATE, CASE WHEN DATUM IS NULL THEN FALSE ELSE TRUE END AS UPDATED FROM
(SELECT DISTINCT DATE VORHANDENES_DATUM FROM ' || TABLE_NAME ||
' WHERE DATE > CURRENT_DATE -14-'||DATE_DIFF|| '
) A
RIGHT JOIN
(
WITH compras AS (
SELECT ( NOW() + (s::TEXT || '' day'')::INTERVAL )::TIMESTAMP(0) AS DATUM
FROM generate_series(-14, -1, 1) AS s
)
SELECT DATUM::DATE
FROM compras)
B
ON DATUM = VORHANDENES_DATUM'
INTO date,result;
RAISE NOTICE '%', result;
INSERT INTO SANDBOX.UPDATED_TODAY VALUES (TABLE_NAME, DATE, RESULT);
END;
$$ LANGUAGE plpgsql;
Предполагается загрузить строки в таблицу SANDBOX.UPDATED_TODAY
, которая содержит имя таблицы, date
и boolean
.boolean
показывает, была ли запись для этой даты в таблице.Вся часть, которая находится внутри EXECUTE ... INTO
, работает нормально и дает мне те дни.
Однако , этот код вставляет только первую строку результата запроса.Я хочу, чтобы все 14 строк были вставлены.Очевидно, мне нужно изменить его на что-то вроде цикла или чего-то совершенно другого, но как именно это будет работать?
Примечание: я удалил некоторые ненужные части, касающиеся этих двух параметров, которые вы можете видеть.Это вообще не имеет к этому отношения.