TABLE()是函数,显式类型转换运算符(如C语言)还是其他东西?

时间:2018-06-23 20:17:17

标签: postgresql

在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 TABLERETURN

谢谢。

1 个答案:

答案 0 :(得分:1)

这不是一个函数,它只是一个语法元素,说明该函数返回一个“表”并命名该表的列。与create table之后的部分相似。

编写create table person(id integer, name text);时,您不希望person()是一个函数,对吗?

这使您可以定义返回集的函数,而不必根据需要使用returns setof ...

预先定义类型。

returns table()未列为单独的SQL Command,因为它不是“ SQL命令”。它是create function命令的 part 的语法元素。它不能在其他任何地方使用。