Я создал функцию PL / pgSQL в PostgreSQL 10.4, используя pgAdmin.Он возвращает запрос и обновляет записи в той же таблице.Вызывается в pgAdmin, работает как положено.При запуске из внешнего кода таблица возвращается, но обновления никогда не запускаются.Хотите знать, связано ли это с тем, как я написал функцию?
CREATE OR REPLACE FUNCTION report()
RETURNS TABLE(id text, t1 text, t2 text)
LANGUAGE 'plpsql'
AS $BODY$
DECLARE
rec RECORD;
BEGIN
RETURN QUERY
SELECT id,
name AS t1,
data AS t2
FROM table1
WHERE status IS NULL;
IF FOUND THEN
FOR rec IN SELECT id
FROM table1
WHERE status IS NULL
LOOP
UPDATE table1 SET val=val+1
WHERE id=rec.id;
END IF;
RETURN;
END
$BODY$;
РЕДАКТИРОВАТЬ:
Спасибо за ответы.У меня больше нет никого, кто мог бы помочь взглянуть, так что это было очень полезно при устранении неполадок в том, что происходило.
Была настолько зациклена на моей функции PL / pgSQL, что возникла проблема, я упустил из виду мою внешнюю программуфункция.Ошибка пользователя с моей стороны.Переместив свое ОБНОВЛЕНИЕ выше моего ВЫБРАТЬ, я заметил, что моя программа видела ОБНОВЛЕНИЕ.Я забыл ЗАВЕРШИТЬ обновления обратно в базу данных в моей внешней программе, поэтому таблица никогда не обновлялась.Добавлен коммит и хорошо для.