Du kan få det felet om du har ett objekt med samma namn som schemat. Till exempel:
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
När du hänvisar till S2.MY_FUNC2
objektnamnet löses så det försöker inte utvärdera S2 som ett schemanamn. När du bara kallar det som MY_FUNC2
det finns ingen förvirring, så det fungerar.
Dokumentationen förklarar namnupplösning. Den första delen av det kvalificerade objektnamnet - S2 här - utvärderas som ett objekt på det aktuella schemat innan det utvärderas som ett annat schema.
Det kanske inte är en sekvens; andra objekt kan orsaka samma fel. Du kan kontrollera om det finns objekt med samma namn genom att söka i dataordlistan.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';