使用 postgres 函数创建视图

Create view using postgres function

我正在尝试使用 postgres 函数构建参数化视图:

CREATE FUNCTION schemaB.testFunc(p INT)
RETURNS TABLE 
AS
RETURN (SELECT * FROM schemaZ.mainTable WHERE id=p)

问题总是一样的:

SQL Error [42601]: ERROR: syntax error at or near "AS"

知道我做错了什么吗?

您需要指定 "return table" 的列,这可以使用

returns table(col_1 integer, col_2 text, ...)

在您的情况下,您只返回一行 table,因此使用起来更容易

returns setof maintable

As documented in the manual the function body needs to be enclosed in single quotes, or using dollar quoting

由于存储函数可以在 Postgres 中用多种不同的语言编写,您还需要指定一种语言 - 在本例中 language sql 是 suitable。

因此,将所有这些放在一起,您需要:

CREATE FUNCTION schemaB.testFunc(p_id INT)
  RETURNS setof  schemaZ.mainTable
AS
$$
 SELECT * 
 FROM schemaZ.mainTable 
 WHERE id = p_id
$$
language sql;

language sql 函数不需要 return 语句。