Tuto chybu můžete získat, pokud máte objekt se stejným názvem jako schéma. Například:
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
Když odkazujete na S2.MY_FUNC2
název objektu se řeší, takže se nepokouší vyhodnotit S2 jako název schématu. Když to nazvete jako MY_FUNC2
není tam žádný zmatek, takže to funguje.
Dokumentace vysvětluje rozlišení názvů. První část kvalifikovaného názvu objektu – zde S2 – je vyhodnocena jako objekt v aktuálním schématu, než je vyhodnocena jako jiné schéma.
Nemusí to být sekvence; jiné objekty mohou způsobit stejnou chybu. Existenci objektů se stejným názvem můžete zkontrolovat dotazem v datovém slovníku.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';