我是一个绝对的菜鸟,无法找到这个答案 如何将结果添加到临时表中? 也许你们有一些提示让我改进我的代码?
我在这里用游标创建了一个函数。但我需要:
drop function if exists non_married_presidents();
create or replace function non_married_presidents()
returns varchar as $$
declare
c_emp cursor for
select name, birth_year from president
where id not in(select pres_id from pres_marriage);
begin
for emp in c_emp loop
raise notice 'name: %, birth_year: %', emp.name, emp.birth_year;
end loop;
end;
$$language plpgsql;
呼叫:
select non_married_presidents();
答案 0 :(得分:0)
你问:
如何将结果添加到临时表中?
你可能会过度思考这个问题。只需使用CREATE TEMP TABLE AS ...
CREATE TEMP TABLE tmp_tbl AS
-- INSERT INTO tmp_tbl (name, birth_year) -- or insert into existing table
SELECT name, birth_year FROM president p
WHERE NOT EXISTS (SELECT 1 FROM pres_marriage WHERE pres_id = p.id);
您不需要光标。这是一个罕见的场合,显式游标将是plpgsql中的最佳选择。
在此期间,NOT IN
是最好避免的构造: