如何编写一个不返回任何内容的 postgres 存储过程?
-
20-09-2019 - |
题
如何在 postgres 中编写一个根本不返回值的简单存储过程?即使使用 void 返回类型,当我调用存储过程时,我也会返回一行。
CREATE FUNCTION somefunc(in_id bigint) RETURNS void AS $$
BEGIN
DELETE from test_table where id = in_id;
END;
$$ LANGUAGE plpgsql;
解决方案
这不是一个返回值的函数,这是你以前称之为SELECT
。如果它不返回任何行,它不会运行功能。
其他提示
您可以通过滥用设置返回函数来实现“不返回任何内容”:
简单功能:
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
参数无关紧要,但是:
- 您需要 > 1 个
- 他们必须被命名
现在您可以:
# select * from x();
o1 | o2
----+----
(0 rows)
您正在做的就好了。你不需要添加任何东西。
行的结果是零,所以它是一个无效的回报。
我不认为有件事你可以做的。检查我的void函数个个就像你的。
返回void如$$和在代码块中没有返回语句。
不隶属于 StackOverflow