我需要一个存储函数,它返回表并返回表从所有9000个表中收集1行。
先决条件:
我希望你能给我一些简单的例子。
我想我无法理解如何处理变量值。
我做了自己,但是没有用。
create or replace function ListOfInc
(ddate int) returns table(col1 int, col2 dec) as $$
declare
numofrow integer;
begin
for i in 1000..9999 loop
numofrow := execute 'select count(*) from x' || i || ';';
if numofrow > 0 then
return query execute 'select ' || i || ' Trunc(100 * (CAST(Lag(adjust) over (order by'
|| %1 || ') as dec) / CAST(adjust as dec) - 1) ,2) from x' || i || ' order by ' || %1 || ' desc limit 1;';
end if;
end loop;
end;
$$ language plpgsql;
答案 0 :(得分:1)
这是PostgreSQL's inheritance features的理想工作。
如果要避免继承,则需要使用动态SQL构建所有表的union all
,或使用RETURN QUERY EXECUTE ...
遍历每个表。
我个人建议将所有数据合并到一个表中。创建视图以模拟旧结构,以便您的应用程序不会注意到更改。