Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо получавам PLS-00302:компонентът трябва да бъде деклариран, когато съществува?

Можете да получите тази грешка, ако имате обект със същото име като схемата. Например:

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';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добра практика за отваряне/затваряне на връзки в приложение на asp.net?

  2. SQL:Вземете записи, създадени във времеви диапазон за конкретни дати

  3. Как да излекувам причината за изключението при хибернация, възникнало IllegalArgumentException при извикване на сетера?

  4. Как да се справяте с единична кавичка в Oracle SQL

  5. Как да вмъкна/актуализирам по-голям размер на данни в таблиците на Oracle?