Du kan få den fejl, hvis du har et objekt med samme navn som skemaet. For eksempel:
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 henviser til S2.MY_FUNC2
objektnavnet bliver løst, så det ikke forsøger at evaluere S2 som et skemanavn. Når du bare kalder det som MY_FUNC2
der er ingen forvirring, så det virker.
Dokumentationen forklarer navneopløsning. Det første stykke af det kvalificerede objektnavn - S2 her - evalueres som et objekt på det aktuelle skema, før det evalueres som et andet skema.
Det er måske ikke en sekvens; andre objekter kan forårsage den samme fejl. Du kan kontrollere, om der findes objekter med samme navn ved at søge i dataordbogen.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';