U kunt die fout krijgen als u een object hebt met dezelfde naam als het schema. Bijvoorbeeld:
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
Wanneer u verwijst naar S2.MY_FUNC2
de objectnaam wordt opgelost, zodat het niet probeert S2 te evalueren als een schemanaam. Als je het gewoon noemt als MY_FUNC2
er is geen verwarring, dus het werkt.
In de documentatie wordt de naamomzetting uitgelegd. Het eerste deel van de gekwalificeerde objectnaam - hier S2 - wordt geëvalueerd als een object in het huidige schema voordat het wordt geëvalueerd als een ander schema.
Het is misschien geen reeks; andere objecten kunnen dezelfde fout veroorzaken. U kunt het bestaan van objecten met dezelfde naam controleren door de datadictionary te raadplegen.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';