Les 2 codes ne sont pas équivalent, il n'y a pas d'erreur no_data_found renvoyé par un SELECT INTO lorsqu'on utilise une fonction d'agrégation.

SQL> declare
2 l_val number;
3 begin
4 ...