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

Получаване на грешка PLS-00201 при създаване на тип в Oracle

%TYPE синтаксисът е за използване в PL/SQL декларации. За съжаление не можем да го използваме, когато създаваме SQL обекти. Същото важи и за %rowtype .

Би било много добре, ако можехме, защото една обща употреба на create or replace type би било да изградите API на таблици, както искате да направите. Въпреки това, би било твърде сложно да се управляват референтни конструкции в речника на данните; имайте предвид, че типовете могат да се използват за дефиниране на други обекти, включително колони на таблица.

Така че, уви, трябва да декларирате типа с изрични типове данни за неговите атрибути:

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

Очевидно трябва също да го синхронизирате ръчно, когато структурата на която и да е колона T_C_EVO_GAME_CONFIG_CHANGE_LOG се промени. Но така или иначе ще трябва да направите това, ако добавите или изпуснете колона.

Като алтернатива можете да дефинирате типа като PL/SQL запис в пакет. Това ще ви позволи да използвате референтния синтаксис.

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;

Зависи как искате да използвате Type във вашето по-широко приложение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12.2 Sharding

  2. Base64 кодиране и декодиране в oracle

  3. Не може да се създаде нова връзка е sqldeveloepr

  4. Жаба отрязва/закръгля големи числа на Oracle?

  5. Създаване на последователност за поле varchar2 в Oracle