Пока типы данных столбца не совпадают, имена столбцов всегда будут поступать из первого запроса.Он не должен (и, как вы обнаружили, не) выдавать ошибку.
Если типы данных не совпадают, даже если неявное преобразование возможно, вы, как правило, получите ошибку
SQL> /
select 1 a from dual union select '2' from dual
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
SQL> /
select '1' a from dual union select 2 from dual
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression