スキーマと同じ名前のオブジェクトがある場合、このエラーが発生する可能性があります。例:
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';