Sie können diesen Fehler erhalten, wenn Sie ein Objekt mit demselben Namen wie das Schema haben. Zum Beispiel:
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
Wenn Sie sich auf S2.MY_FUNC2
beziehen Der Objektname wird aufgelöst, sodass nicht versucht wird, S2 als Schemanamen auszuwerten. Wenn Sie es einfach als MY_FUNC2
aufrufen Es gibt keine Verwirrung, also funktioniert es.
Die Dokumentation erklärt die Namensauflösung. Der erste Teil des qualifizierten Objektnamens – hier S2 – wird als Objekt im aktuellen Schema ausgewertet, bevor es als anderes Schema ausgewertet wird.
Es ist möglicherweise keine Sequenz; andere Objekte können denselben Fehler verursachen. Sie können das Vorhandensein von Objekten mit demselben Namen überprüfen, indem Sie das Datenwörterbuch abfragen.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';