Você pode obter esse erro se tiver um objeto com o mesmo nome do esquema. Por exemplo:
create sequence s2;
begin
s2.a;
end;
/
ORA-06550: line 2, column 6:
PLS-00302: component 'A' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
Quando você se refere a
S2.MY_FUNC2
o nome do objeto está sendo resolvido para que ele não tente avaliar S2 como um nome de esquema. Quando você apenas chama como MY_FUNC2
não há confusão, então funciona. A documentação explica a resolução de nomes. A primeira parte do nome do objeto qualificado - S2 aqui - é avaliada como um objeto no esquema atual antes de ser avaliada como um esquema diferente.
Pode não ser uma sequência; outros objetos podem causar o mesmo erro. Você pode verificar a existência de objetos com o mesmo nome consultando o dicionário de dados.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';