multiset union distinct
изисква елементите на колекцията да бъдат сравними. Във вашия случай елементите са PL/SQL записи, които за съжаление не са сравними структури от данни (т.е. PL/SQL не предоставя вграден механизъм за сравняване на PL/SQL записи).
multiset union
работи, защото не е необходимо да сравнява елементите.
Едно възможно решение е да се използва тип обект на Oracle вместо PL/SQL запис. Типът обект ви позволява да имплементирате метод за сравнение изисква се от multiset union distinct
.