Create or Replace Function seguimiento.inserta_observacion(int,char,char,varchar,char,text,varchar,varchar,text,varchar,varchar) Returns Text As $body$ Declare mensaje varchar(500); codigos_area varchar Array[6]; area varchar; i int; Begin Insert Into seguimiento.observaciones Values($1,$2,$3,$4,$5,$6,$7,$8,$9,$10); If Not Found Then Raise Exception '%',mensaje; Else Select string_to_array($11,'|') Into codigos_area; -- For area in codigos_area i = 1; Loop exit when codigos_area[i] is null; area = codigos_area[i]; If area <> '-' Then Insert Into seguimiento.area_observacion values($1,area); if Not Found Then Raise Exception '%',mensaje; Else mensaje = 'OK'; End If; End If; i = i + 1; End Loop; End If; return mensaje; End; $body$ Language 'plpgsql';