Postgres 调用 void 函数
Posted
技术标签:
【中文标题】Postgres 调用 void 函数【英文标题】:Postgres calling a void function 【发布时间】:2014-04-02 07:18:30 【问题描述】:我有一个无效的 plsql 函数:
CREATE OR REPLACE FUNCTION do_something(p_id BIGINT)
RETURNS void
AS $$
BEGIN
insert ....
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
我想从另一个 plsql 函数调用这个函数,但是在一个查询中,比如:
SELECT do_something(m.id)
FROM MyTable m
WHERE m.IsActive;
当我运行sproc
时,我得到:
错误:查询没有结果数据的目的地提示:如果你想 丢弃 SELECT 的结果,改用 PERFORM。
是否可以在 select
语句中调用 void 函数?
【问题讨论】:
【参考方案1】:提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。
PERFORM do_something(m.id)
FROM MyTable m
WHERE m.IsActive;
PERFORM
是SELECT
的 PL/PgSQL 替代方案,当您想丢弃结果时。它不能在 PL/PgSQL 之外使用。有关详细信息,请参阅手册。
【讨论】:
也许值得一提,PERFORM
仅在 pl/pgsql 上下文中有效。
是的,公平的。我通常会写更深入的答案,但这是一个“您是否真的阅读了错误消息/搜索错误”...
:-) 我确实阅读了错误并且我确实尝试了“PERFORM”......但我一定是把它弄乱了......因为在它不起作用之前......现在它确实...... .grrr ...抱歉浪费大家的时间。以上是关于Postgres 调用 void 函数的主要内容,如果未能解决你的问题,请参考以下文章
使用临时表调用 postgres 函数的节点导致“内存泄漏”