Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao tôi nhận được PLS-00302:thành phần phải được khai báo khi nó tồn tại?

Bạn có thể gặp lỗi đó nếu bạn có một đối tượng trùng tên với lược đồ. Ví dụ:

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

Khi bạn tham khảo S2.MY_FUNC2 tên đối tượng đang được giải quyết vì vậy nó không cố gắng đánh giá S2 như một tên lược đồ. Khi bạn chỉ gọi nó là MY_FUNC2 không có sự nhầm lẫn, vì vậy nó hoạt động.

Tài liệu giải thích độ phân giải tên. Phần đầu tiên của tên đối tượng đủ điều kiện - S2 ở đây - được đánh giá là một đối tượng trên lược đồ hiện tại trước khi nó được đánh giá là một lược đồ khác.

Nó có thể không phải là một chuỗi; các đối tượng khác có thể gây ra lỗi tương tự. Bạn có thể kiểm tra sự tồn tại của các đối tượng có cùng tên bằng cách truy vấn từ điển dữ liệu.

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. TO_DATE () Hàm trong Oracle

  2. Sự khác biệt giữa chỉ số chính và chỉ số phụ chính xác là gì?

  3. Định cấu hình sao chép cơ sở dữ liệu không đồng nhất - SQL Server sang Oracle

  4. Cách thay đổi ngôn ngữ cho phiên Oracle của bạn

  5. Câu lệnh FORALL với mệnh đề giá trị-OF Bound trong cơ sở dữ liệu Oracle