我有这个工作代码,但我需要将其转换为具有动态属性的函数,tid = 1645其中数字 1645 将始终更改。
with recursive r as (
select tid, boss from titles where tid=1645
union
select titles.tid, titles.boss from titles join r on titles.tid = r.boss
)
select * from r
现在有这个:
DROP FUNCTION bosses_of_rsd_tids(integer);
CREATE OR REPLACE FUNCTION public.bosses_of_rsd_tids(rsd_tid int)
RETURNS table (c_tid int, c_boss int)
LANGUAGE plpgsql
AS $function$
begin
with recursive r as (
select tid, boss from titles where tid=rsd_tid
union
select titles.tid, titles.boss from titles join r on titles.boss = r.tid
)
select c_tid, c_boss;
end;
$function$
;
结果,我需要一个结果表...我尝试return select c_tid, c_boss;了但出现错误:near return
从某种意义上说,您只想将请求隐藏在存储中?那么 plpgsql 对你有什么用呢?简单
language sql就足够了:好吧,对于 plpgsql 有一个特殊的结构
return query简单
return- 这是用于生成结果,但不是用于返回一组行。例如,对于returns bool函数。TABLE rSELECT * FROM r 的缩写。而且我的输入select c_tid, c_boss是错误的。如何将递归转换为plpgsql中的函数?