【发布时间】:2015-12-14 06:33:47
【问题描述】:
我最近才开始涉足 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. 一大堆难以阅读的文字,但仍然找不到我可以使用的适用示例。 2. 尽管主题包含多个值,但这是一个不同的问题。 3. 同样,尽管主题相似,但问题不同。
标签: postgresql