Oracle сделает все возможное для кэширования результата, если вы позволите. Но вы все равно можете иметь временную таблицу, если вы действительно хотите, и она довольно мала. Если вы используете пакет, вы можете создать временную таблицу при первом вызове, а остальные 2 раза использовать кэшированные данные - попробуйте переменные пакета и посмотрите, будет ли это то, что вам нужно.