Vous pourriez avoir besoin d'une GLOBAL TEMPORARY TABLE.
Dans Oracle, ceux-ci sont créés une seule fois, puis lorsqu'ils sont invoqués, les données sont privées pour votre session.
Lien vers la documentation Oracle
Essayez quelque chose comme ça...
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;
/