I am thinking the best way to achieve this would be to loop through my recordgroup and make a table of the contents, then I could simply use:-
where firstname in ( select * from temptable);
only problem is that I dont know how to make a table within the code.. here`s what I have

procedure recordgroup_was_updated is
the_Rowcount NUMBER;
rg_id RecordGroup;
gc_id GroupColumn;
col_val VARCHAR2(80);
Exit_Function Exception;
BEGIN
rg_id := Find_Group( 'names' );
IF Id_Null(rg_id) THEN
Message('Record Group names does not exist.');
RAISE Exit_Function;
END IF;
gc_id := Find_Column( 'names.firstname' );
IF Id_Null(gc_id) THEN
Message('firstname does not exist.');
RAISE Exit_Function; END IF;
the_Rowcount := Get_Group_Row_Count( rg_id );
/* create the temp table*/
FOR j IN 1..the_Rowcount
LOOP
/* insert into temptable from current position in recordgroup */
blah ..... Get_Group_Char_Cell( gc_id,j)';
END LOOP;
END;