我想用pl/pgsql
. 我正在使用PostgresEnterprise Manager v3并使用 shell 来创建一个函数,但是在 shell 中我必须定义返回类型。如果我不定义返回类型,我将无法创建函数。
如何创建没有返回结果的函数,即创建新表的函数?
我想用pl/pgsql
. 我正在使用PostgresEnterprise Manager v3并使用 shell 来创建一个函数,但是在 shell 中我必须定义返回类型。如果我不定义返回类型,我将无法创建函数。
如何创建没有返回结果的函数,即创建新表的函数?
使用RETURNS void
如下:
CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$
#variable_conflict use_variable
DECLARE
curtime timestamp := now();
BEGIN
UPDATE users SET last_modified = curtime, comment = comment
WHERE users.id = id;
END;
$$ LANGUAGE plpgsql;
PROCEDURE
秒PostgreSQL 11 引入了PROCEDURE
s,它们基本上是什么都不返回的函数,但是用CALL
而不是调用SELECT
,
如何创建没有返回结果的函数,即创建新表的函数?
像这样,
=# CREATE PROCEDURE create_table_foo()
AS $$
CREATE TABLE foo ( id int )
$$ LANGUAGE sql;
=# CALL create_table_foo();
=# \d foo;
Table "public.foo"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
函数必须总是返回一些东西,尽管你可以使用像
do $$
并从正常功能开始
declare
...
但是如果你仍然想做一个函数,只需在return之后添加void。