【发布时间】:2018-04-21 02:50:47
【问题描述】:
我创建了一个函数来循环查询结果,它工作正常。我想让它工作,而不必预先创建一个表来存储结果。即,我只想遍历行。问题是,当没有要检查的内容时,我不确定如何声明与返回的行类型相同的记录。
这是我目前的功能:
CREATE OR REPLACE FUNCTION dimensions.testing()
RETURNS void
LANGUAGE plpgsql
AS $body$
DECLARE rec myschema.tmpfiles%rowtype;
BEGIN
insert into myschema.tmpfiles(file_name, log_date)
SELECT f.file_name, f.log_date from dblink('conn', 'select
file_name, log_date from myschema.process_tracker where
isprocessed = FALSE') as f(file_name varchar, log_date date);
IF EXISTS (SELECT 1 FROM myschema.tmpfiles) THEN
for rec in select * from myschema.tmpfiles
loop
RAISE NOTICE '%', rec.file_name;
RAISE NOTICE '%', rec.log_date;
RAISE NOTICE '---------------------------';
end loop;
ELSE
--DO SOMETHING
END IF;
END;
$body$
工作正常,但我需要一个预定义的表才能执行此操作:(DECLARE rec myschema.tmpfiles%rowtype;) 并获取行类型。
如何在不预先定义结果表的情况下循环这个查询?
谢谢!
【问题讨论】:
-
declare rec record?
标签: postgresql loops