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

Gặp lỗi PLS-00201 khi tạo một loại trong oracle

%TYPE cú pháp được sử dụng trong khai báo PL / SQL. Thật không may, chúng tôi không thể sử dụng nó khi tạo các đối tượng SQL. Tương tự với %rowtype .

Sẽ rất gọn gàng nếu chúng ta có thể, bởi vì một cách sử dụng phổ biến là create or replace type sẽ là xây dựng các API bảng như bạn muốn. Tuy nhiên, sẽ quá phức tạp để quản lý các cấu trúc tham chiếu trong từ điển dữ liệu; lưu ý rằng Kiểu có thể được sử dụng để xác định các đối tượng khác bao gồm các cột của Bảng.

Vì vậy, than ôi, bạn cần phải khai báo Loại với các kiểu dữ liệu rõ ràng cho các thuộc tính của nó:

create or replace type TYPE_EVOL_CONFIG_CHANGE_LOG as object
    (
    F_TABLE_MODIFIED        VARCHAR2(40) ,
    F_OPERATION_PERFORMED   VARCHAR2(30),
    F_ROWS_ALTERED          INTEGER , 
    F_LAST_UPDATED_BY       VARCHAR2(20) ,
    F_LAST_UPDATED_DATE     DATE
);

Rõ ràng là bạn cũng cần phải đồng bộ hóa nó theo cách thủ công bất cứ khi nào cấu trúc của bất kỳ cột T_C_EVO_GAME_CONFIG_CHANGE_LOG nào thay đổi. Nhưng bạn vẫn phải làm điều này nếu bạn thêm hoặc bớt một cột.

Ngoài ra, bạn có thể xác định kiểu dưới dạng bản ghi PL / SQL trong một gói. Điều đó sẽ cho phép bạn sử dụng cú pháp tham chiếu.

create or replace package game_config as    

    TYPE_EVOL_CONFIG_CHANGE_LOG is record
    (
        F_TABLE_MODIFIED        T_C_EVO_GAME_CONFIG_CHANGE_LOG.F_TABLE_MODIFIED%TYPE ,
        F_OPERATION_PERFORMED   T_C_EVO_GAME_CONFIG_CHANGE_LOG.F_OPERATION_PERFORMED%TYPE,
        F_ROWS_ALTERED          T_C_EVO_GAME_CONFIG_CHANGE_LOG.F_ROWS_ALTERED%TYPE , 
        F_LAST_UPDATED_BY       T_C_EVO_GAME_CONFIG_CHANGE_LOG.F_LAST_UPDATED_BY%TYPE ,
        F_LAST_UPDATED_DATE     T_C_EVO_GAME_CONFIG_CHANGE_LOG.F_LAST_UPDATED_DATE%TYPE
    );

    -- or even
    TYPE TAB_EVOL_CONFIG_CHANGE_LOG is table of T_C_EVO_GAME_CONFIG_CHANGE_LOG%rowtype;
end;

Nó phụ thuộc vào cách bạn muốn sử dụng Loại trong ứng dụng rộng hơn của mình.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo đối tượng ODP.Net OracleConnection 32-bit rất chậm

  2. ORA-01591 - Xóa dữ liệu thần kỳ khỏi bảng máy chủ sql từ xa

  3. .NET Oracle quản lý kết nối kết nối truy cập dữ liệu không hoạt động hoặc chậm

  4. Java - nghĩa chính xác http.maxConnections

  5. CHO THUÊ LOB