在PostgreSQL中,当定义返回表的函数时,
CREATE FUNCTION sum_n_product_with_tab (x int)
RETURNS TABLE(sum int, product int) AS $$
SELECT $1 + tab.y, $1 * tab.y FROM tab;
$$ LANGUAGE SQL;
什么是TABLE()
?
TABLE()
是内置函数,显式类型转换运算符(例如C语言)还是其他?
与return table
一样,create table
是不可分割的命令吗?在PostgreSQL的文档中,为什么"SQL Commands"列出CREATE TABLE
而不列出RETURN TABLE
或RETURN
?
谢谢。
答案 0 :(得分:1)
这不是一个函数,它只是一个语法元素,说明该函数返回一个“表”并命名该表的列。与create table
之后的部分相似。
编写create table person(id integer, name text);
时,您不希望person()
是一个函数,对吗?
这使您可以定义返回集的函数,而不必根据需要使用returns setof ...
returns table()
未列为单独的SQL Command,因为它不是“ SQL命令”。它是create function
命令的 part 的语法元素。它不能在其他任何地方使用。