sql >> Databasteknik >  >> RDS >> Oracle

Får PLS-00201-fel när en typ i oracle skapas

%TYPE syntax är för användning i PL/SQL-deklarationer. Tyvärr kan vi inte använda det när vi skapar SQL-objekt. Detsamma gäller för %rowtype .

Det skulle vara mycket snyggt om vi kunde, eftersom en vanlig användning av create or replace type skulle vara att bygga tabell-API:er som du vill göra. Det skulle dock vara för komplicerat att hantera referenskonstruktioner i dataordboken; kom ihåg att typer kan användas för att definiera andra objekt inklusive tabellkolumner.

Så tyvärr, du måste deklarera typen med explicita datatyper för dess attribut:

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

Uppenbarligen måste du också synkronisera det manuellt närhelst strukturen för någon T_C_EVO_GAME_CONFIG_CHANGE_LOG-kolumn ändras. Men du skulle behöva göra detta ändå om du lade till eller släppte en kolumn.

Alternativt kan du definiera typen som en PL/SQL-post i ett paket. Det skulle tillåta dig att använda referenssyntaxen.

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;

Det beror på hur du vill använda typen i din bredare applikation.




  1. Vad ska man säga om väntetypen ASYNC NETWORK IO?

  2. Oracle IN vs finns skillnad?

  3. Entity Framework 4 Code First - Förhindra DB släpp/skapa

  4. Använder JShell i Java 9 i NetBeans 9.0, del 2