postgresql - 使用 postgres 函数创建视图
问题描述
我正在尝试使用 postgres 函数构建参数化视图:
CREATE FUNCTION schemaB.testFunc(p INT)
RETURNS TABLE
AS
RETURN (SELECT * FROM schemaZ.mainTable WHERE id=p)
问题总是一样的:
SQL 错误 [42601]:错误:“AS”处或附近的语法错误
知道我做错了什么吗?
解决方案
您需要指定“返回表”的列,这可以使用
returns table(col_1 integer, col_2 text, ...)
在您的情况下,您只返回一个表的行,因此更易于使用
returns setof maintable
由于 Postgres 中存储的函数可以用多种不同的语言编写,因此您还需要指定一种语言 - 在这种情况下language sql
是合适的。
因此,将所有这些放在一起,您需要:
CREATE FUNCTION schemaB.testFunc(p_id INT)
RETURNS setof schemaZ.mainTable
AS
$$
SELECT *
FROM schemaZ.mainTable
WHERE id = p_id
$$
language sql;
函数不需要return
声明language sql
。
推荐阅读
- javascript - 将占位符添加到多个谷歌图表字符串过滤器
- hp-uft - 从java网页获取子对象列表
- python - 如果“try”子句抛出 SyntaxError,Python“finally”子句不会执行
- python - 是什么导致我的链表队列 python 文件中的名称错误错误无法正常工作
- node.js - NodeJS 网络套接字数据完成
- c# - 从图像 UWP 中获取像素数据
- reactjs - 为什么组件没有在使用反应路由的反应 JS 中呈现在父布局中?
- python - 将位置添加到爬行推文
- vue.js - 使用 insertHtml Medium.js 重复相同的内容
- r - 如何在 flexdashboard 中包含 og 标签?