Une option consiste à utiliser la liste de valeurs en cascade et définissez les éléments précédents comme "élément(s) parent(s)". La requête pour chaque élément de liste de sélection suivant supprimerait les valeurs précédemment choisies, par exemple
select subject_name d,
subject_id r
from subjects
where subject_id not in (:P1_FIRST_MAJOR, :P1_SECOND_MAJOR);
Cependant, pourquoi n'utiliseriez-vous pas une navette ? article à la place ? Proposer tous les sujets et laisser l'élève en sélectionner un, simplement en les déplaçant de gauche à droite de l'élément navette ?