问题
我正在尝试使用 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 setof schemaZ.mainTable
- AS
- $$
- SELECT *
- FROM schemaZ.mainTable
- WHERE id = p_id
- $$
- language sql;
复制代码
语言 sql 函数不需要 return 语句。
|