如何在postgres中编写一个不返回值的简单存储过程? 当我调用存储过程时,即使使用void返回类型,我也会返回一行。
CREATE FUNCTION somefunc(in_id bigint) RETURNS void AS $$
BEGIN
DELETE from test_table where id = in_id;
END;
$$ LANGUAGE plpgsql;
答案 0 :(得分:7)
这不是返回值的函数,而是您用来调用它的SELECT
。如果它没有返回任何行,则它不会运行您的函数。
答案 1 :(得分:6)
您可以通过滥用设置返回功能来实现“无任何返回”:
简单功能:
create function x () returns setof record as $$
begin
return;
END;
$$ language plpgsql;
现在你可以:
# select x();
x
---
(0 rows)
如果它对您不起作用(抱歉,我使用的是8.5),请尝试这种方法:
# create function x (OUT o1 bool, OUT o2 bool) returns setof record as $$
begin
return;
END;
$$ language plpgsql;
CREATE FUNCTION
参数无关紧要,但是:
现在你可以:
# select * from x();
o1 | o2
----+----
(0 rows)
答案 2 :(得分:5)
你做得很好。你不需要添加任何其他东西。
该行的结果为null,因此它是一个void返回。
我不认为你可以做些什么。检查我的虚函数所有这些都和你的一样。
返回void as $$,代码块中没有return语句。