Cuando quieras utilizar sql dinamico como veo que lo estas tratando de hacer, es necesario que utilices la sentencia EXECUTE.
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION prueba()
RETURNS SETOF "int8" AS
$BODY$
DECLARE
r INTEGER;
r2 INTEGER;
i INTEGER;
BEGIN
r := 0;
FOR i IN 1..10 LOOP
EXECUTE 'SELECT dia_habil_'|| i ||' FROM dia_habil WHERE dispositivo=''10000002'' AND intervalo=''06:00''' INTO r2;
r:= r+ r2;
RETURN NEXT r;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;