Можете да получите тази грешка, ако имате обект със същото име като схемата. Например:
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
Когато се позовавате на S2.MY_FUNC2
името на обекта се разрешава, така че да не се опитва да оцени S2 като име на схема. Когато просто го извикате като MY_FUNC2
няма объркване, така че работи.
Документацията обяснява разделянето на имената. Първата част от името на квалифицирания обект - S2 тук - се оценява като обект в текущата схема, преди да бъде оценена като различна схема.
Може да не е последователност; други обекти могат да причинят същата грешка. Можете да проверите за съществуването на обекти със същото име, като направите заявка в речника на данните.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';