In Oracle, you don't create temporary tables "on the fly". Oracle supports
global temporary tables only. This table would be permanently present in your schema, like any other "normal" table. Each session then sees its own contents of a temporary table. Furthermore, there are two kinds of this table, one preserves rows across commits, the other drops all rows when you commit; so make sure you don't have an autocommit on in the second case. The details are
here.
However, Oracle can usually support pretty complex SQL queries, sometimes much more complex than other databases. If you manage to do all of the manipulations in pure-SQL, and formulate the query right, it will probably be faster than any stored procedure. Oracle can actually create a hidden temporary table on its own if it feels like it, but it will likely still be faster than a stored procedure.
So, investigate the pure-SQL approach first. You might find the
subquery factoring (WITH) clause useful.