In order to create, fill, the select and return data from a temporary table, you need to perform a little trick to get around the syntax.
Create procedure myproc(...)
...
DECLARE GLOBAL TEMPORARY TABLE fred ...
INSERT INTO SESSION.FRED ...
...
BEGIN
DECLARE CURSOR1 CURSOR WITH RETURN TO CLIENT FOR SELECT * from SESSION.FRED;
OPEN CURSOR1;
END;
END
HTH
Andy