amigos lo soluciene
primero de clare una variable cat int y cada la cual tomaba el valor cada vez que iteraba , adema en la tabla quite el array y lo coloque solo entero
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION inserciones(fec_ini_actividad DATE,fec_fin_actividad DATE,hor_ini_actividad CHARACTER VARYING(30),hor_fin_actividad CHARACTER VARYING(30),fen_actividad INTEGER,vol_actividad INTEGER,ban_actividad CHARACTER VARYING(20),nba_actividad INTEGER,
rep_actividad INTEGER,
obs_actividad text,
id_cat INTEGER,
id_cat_s INTEGER[]
) RETURNS INTEGER AS $$
DECLARE
id_tabla BIGINT;
cat INT;
BEGIN
id_tabla := secuenciaa();
INSERT INTO actividad VALUES (id_tabla,fec_ini_actividad,fec_fin_actividad,hor_ini_actividad,hor_fin_actividad,fen_actividad,vol_actividad,ban_actividad,nba_actividad,rep_actividad,obs_actividad);
FOR i IN 1..array_upper(id_cat_s,1) LOOP
cat =id_cat_s[i];
INSERT INTO subfenomenos VALUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'),id_tabla,cat);
END LOOP;
RETURN id_tabla;
END;
$$ LANGUAGE plpgsql;
Código SQL:
Ver originalCREATE TABLE subfenomenos
(
id_sub_fenomeno serial NOT NULL,
id_actividad INTEGER,
id_cat INTEGER,
}