我有一个void 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。
是否可以将void函数作为select
语句的一部分调用?
答案 0 :(得分:4)
提示:如果要放弃SELECT的结果,请改用PERFORM。
PERFORM do_something(m.id)
FROM MyTable m
WHERE m.IsActive;
PERFORM
是SELECT
的PL / PgSQL替代品,当你想要抛弃结果时。它不能在PL / PgSQL之外使用。有关详细信息,请参阅手册。