添加返回子句

如果您使用 CREATE FUNCTION 来创建 SPL 例程,您必须指定返回一个或多个值的返回子句。
提示: 如果您使用 CREATE PROCEDURE 语句来创建 SPL 例程,则您有指定返回子句的选项。然而,如果您使用 CREATE FUNCTION 语句来创建返回值的例程,则您的代码会比较易读且易于维护。

要指定返回子句,请使用带有该例程将返回的数据类型的列表的 RETURNING 或 RETURNS 关键字。数据类型可为除了 SERIAL、SERIAL8、TEXT 或 BYTE 之外的任何 SQL 数据类型。

下图中的返回子句指定,该 SPL 例程将返回 INT 值和 REAL 值。

图: 指定返回子句。

FUNCTION find_group(id INT)
            RETURNING INT, REAL;
            . . .
            END FUNCTION;

在您指定返回子句之后,您还必须在例程体中指定 RETURN 语句,显式地返回调用例程的值。要获取关于编写 RETURN 语句的更多信息,请参阅 从 SPL 函数返回值

要指定应返回简单大对象(TEXT 或 BYTE 值)的函数,您必须使用 REFERENCES 子句,如下图所示,这是因为 SPL 例程仅返回指向该对象的指针,而不是该对象本身。

图: 使用 REFERENCES 子句。

CREATE FUNCTION find_obj(id INT)
          RETURNING REFERENCES BYTE;