我最近才开始涉足 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
Run Code Online (Sandbox Code Playgroud) postgresql ×1