52ky 发表于 2022-5-6 13:05:02

使用 postgres 函数创建视图

问题
我正在尝试使用 postgres 函数构建参数化视图:
CREATE FUNCTION schemaB.testFunc(p INT)
RETURNS TABLE
AS
RETURN (SELECT * FROM schemaZ.mainTable WHERE id=p)
问题总是一样的:

你知道我做错了什么吗?

回答
您需要指定“返回表”的列,这可以使用

返回表(col_1 整数,col_2 文本,...)

在您的示例中,仅返回一个表中的行,因此更易于使用

返回主表集

如手册所述,函数体需要用单引号括起来,或者使用美元引号。

由于存储函数可以用多种不同的语言在 Postgres 中编写,因此您还需要指定一种语言——在这种情况下,语言 sql 是合适的。

因此,要将所有这些放在一起,您需要:
CREATE FUNCTION schemaB.testFunc(p_id INT)
RETURNS setofschemaZ.mainTable
AS
$$
SELECT *
FROM schemaZ.mainTable
WHERE id = p_id
$$
language sql;

语言 sql 函数不需要 return 语句。



页: [1]
查看完整版本: 使用 postgres 函数创建视图