Може да се нуждаете от ГЛОБАЛНА ВРЕМЕННА ТАБЛИЦА.
В Oracle те се създават веднъж и след това при извикване данните са частни за вашата сесия.
Връзка към документацията на Oracle
Опитайте нещо подобно...
CREATE GLOBAL TEMPORARY TABLE temp_number
( number_column NUMBER( 10, 0 )
)
ON COMMIT DELETE ROWS;
BEGIN
INSERT INTO temp_number
( number_column )
( select distinct sgbstdn_pidm
from sgbstdn
where sgbstdn_majr_code_1 = 'HS04'
and sgbstdn_program_1 = 'HSCOMPH'
);
FOR pidms_rec IN ( SELECT number_column FROM temp_number )
LOOP
-- Do something here
NULL;
END LOOP;
END;
/