如何创建不返回任何内容的函数


107

我想用写一个函数pl/pgsql。我正在使用PostgresEnterprise Manager v3,并使用shell来创建函数,但是我必须在shell中定义返回类型。如果未定义返回类型,则无法创建函数。

如何创建没有返回结果的函数,即创建新表的函数?

Answers:


167

用法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;

18
对于其他读者,请注意,该#variable_conflict指令与其余答案无关。它只是示例函数的一部分;唯一重要的一点是RETURNS void。另外,很酷,我不知道PL / PgSQL有编译指示。
Craig Ringer 2013年

以下是利用以下相关案例#variable_conflictdba.stackexchange.com/a/105828/3684
Erwin Brandstetter

1
如何在另一个函数中使用此函数?如果我没有尝试SELECT * FROM stamp_user(...),那么我就会得到error: query has no destination for result data,如果我只写,stamp_user(...)我就会得到syntax error
pir

0

函数必须始终返回某些内容,尽管您可以使用以下过程

do $$

并从正常功能开始

declare
...

但如果你还是想要做一个函数只是添加无效的回报

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.