The problem is that while your PL/SQL block creates a temp table, it doesn't actually return any data. Crystal is looking for the data. So, intead of using a temp table, I would return a refcursor - I'm not sure that Crystal will handle a temp table. This mean creating a stored function in the database to handle this instead of using an anonymous PL/SQL block.
-Dell