Я только недавно начал заниматься PostgreSQL, и я строил функции для обработки необходимых задач.Возвращение нескольких значений в функции
Существует таблица под названием queue, в которую добавляются новые задачи со статусом «New». Следующая функция должна обновлять эти новые задачи и возвращать их значения столбцов queueid, которые являются сериалами bigint. Поскольку не может быть ни одного, одной или нескольких задач, я должен иметь возможность возвращать ни одного, одно или несколько значений.
Возвращая эти значения, я встал против стены. Я искал ответы на вопросы, но пока не добился успеха. В последнем эксперименте я попытался использовать переменную OUT и присвоить ей результаты, но, по-видимому, INTO не может правильно присвоить значения массиву, и я не понял, как заставить его работать.
Пожалуйста, помогите мне. :) Очень признателен.
CREATE OR REPLACE FUNCTION assign_task(
IN worker text,
OUT id bigint[])
RETURNS bigint[] AS
$BODY$BEGIN
EXECUTE 'UPDATE queue
SET status = ''In progress'', worker = $1
WHERE status = ''New''
RETURNING queueid'
INTO id
using worker;
END;$BODY$
LANGUAGE plpgsql VOLATILE
Вы проверили это -> 1. https://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions 2. http://www.postgresql.org/message-id/[email protected] 3. http://stackoverflow.com/questions/4547672/return-multiple-fields-as -a-record-in-postgresql-with-pl-pgsql – Techidiot
Да, я это сделал. 1. Довольно трудно прочитать текст, но тем не менее не удалось найти применимый пример, с которым я мог бы работать. 2. Несмотря на предмет, содержащий несколько значений, это другая проблема. 3. Опять же, другая проблема, несмотря на сходство в предмете. – KeeperB5