postgreSQL pl/python 如何获取查询的 RETURNING 结果?

0 投票
1 回答
1416 浏览
提问于 2025-04-16 22:55

在这个(非常简化的)查询中,怎么才能从 RETURNING 中返回 myfile_key 呢?

CREATE OR REPLACE FUNCTION myfunction (src int, OUT result int) AS $$

plan = plpy.prepare("INSERT INTO myfile VALUES (nextval('seq_myfile'),$1,$2)
RETURNING myfile_key", ["integer","integer"] )

$$ LANGUAGE plpythonu;

(这里插入的第一个字段是 myfile_key)

这段代码没有把值返回到输出中,我也没法像标准的 Python 结果那样查询它,像这样:

result = rv[0]["myfile_key"] 

1 个回答

0

我想你的代码里缺少一个对 plpy.execute 的调用。你说得对,可以像 rv[0]["myfile_key"] 这样访问 RETURNING 列。不过,问题在于在 PL/Python 中给 OUT 参数赋值的部分不太对。我建议你把函数改写一下,不要用 OUT 参数,而是用普通的 return 语句。

撰写回答