postgresql - 如何在 Postgres 函数中使用 WITH?
问题描述
函数中的as怎么写?我想写一个递归函数来计算汽车的重量。它给了我类似的错误:错误:“WITH”处或附近的语法错误
create or replace function aggregateWeight(p integer)
returns int as
$$
begin
if p in (select p.pid
from parts p) then
return (select p.weight
from parts p)
else
return
WITH RECURSIVE included_parts(pid, sid, quantity) AS (
SELECT ps.pid, ps.sid, ps.quantity
FROM partSubPart ps
UNION ALL
SELECT pr.pid, ps.sid, pr.quantity*ps.quantity
FROM included_parts pr, partSubPart ps
WHERE ps.pid = pr.sid
)
SELECT sum(pr.quantity*p.weight)
FROM included_parts pr, parts p
where pr.sid in (select p.pid from parts p)
GROUP BY pid;
end;
$$ language sql;
解决方案
尝试用括号括住查询。
您还END IF;
缺少ELSE
.
推荐阅读
- java - 从 Set (Collection) 中获取任何项目
- sql-injection - 使用 Dynogels 进行 NoSQL 注入
- c++ - 如何检查条件是否为真 5 秒?
- javascript - 如何在 ES6 中扩展从父类继承的类属性?
- docker - 我的 docker 无法使用私有注册表(503 服务不可用)
- dart - 为什么 Dart 隔离中的流在没有接收端口的情况下不起作用
- excel - 将单行(名称、开始日期、结束日期)转换为多行
- selenium - 如何使用 Selenium IDE 获取单击值
- php - 如何使用 PHP 通过 id 在 MySQL 表中获取最新元素
- php - 如何在具有 PERL 模式的 PHP 上计算校验和