我遇到了一个问题,当我试图执行一个函数时,它是否返回记录取决于另一个函数的结果。我想做的是,当函数(本例中的“function_typecar”)返回1作为结果,它返回记录,否则为否。问题是当条件不满足时。它会重复相同的记录,直到有一个记录再次满足条件。当条件不满足时,有没有办法跳过返回记录?我留下了一个这种情况的例子
CREATE OR REPLACE FUNCTION schema.function_test
RETURNS TABLE(id_r INTEGER, name_r CHARACTER VARYING, year_r INTEGER) AS
$BODY$
DECLARE
sql_record RECORD;
type_car INTEGER;
BEGIN
SELECT id, name, year
FROM car
FOR sql_record IN
SELECT id, name, year
FROM car
LOOP
SELECT type INTO type_car FROM function_typecar(sql_record.id);
IF type_car = 1 THEN
id_r := sql_record.id;
name_r := sql_record.name;
year_r := sql_record.year;
END IF;
RETURN NEXT;
END LOOP;
END; $BODY$
这是我想要避免的结果,它只会给我带来满足IF条件的结果:
1条答案
按热度按时间vxf3dgd41#
类似这样的代码应该可以工作,不需要LOOP,使用普通SQL: