Sorry - I can't give you "tested to be working" code because I dont have a remote HS source to test against, but here's hopefully a better version
DECLARE
TYPE t_record IS RECORD( x int,y long);
type t_row_list is table of t_record index by pls_integer;
l_row_list t_row_list;
l_long_var varchar2(32767);
BEGIN
FOR i IN (SELECT "ID" xxx, "Message" yyy
FROM "test1"@tosyslog)
LOOP
l_row_list (l_row_list.COUNT + 1).x := i.xxx;
l_long_var := i.yyy;
l_row_list (l_row_list.COUNT).y := l_long_var;
END LOOP;
13
FORALL ii IN 1 .. l_row_list.COUNT
INSERT INTO syslog2
VALUES l_row_list (ii);
END;