sql >> データベース >  >> RDS >> Oracle

Oracleで型を作成中にPLS-00201エラーが発生する

    %TYPE 構文は、PL/SQL宣言で使用するためのものです。残念ながら、SQLオブジェクトを作成するときに使用することはできません。 %rowtypeについても同じことが言えます 。

    create or replace typeの一般的な使用法の1つであるため、可能であれば非常に便利です。 あなたがしたいようにテーブル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;
    

    幅広いアプリケーションでタイプをどのように使用するかによって異なります。




    1. 既存の外部キーに固有の追加

    2. 値が欠落しているテーブルをインポートするにはどうすればよいですか?

    3. Hibernateの複数行挿入postgresql

    4. 結合されたテーブルで個別の値を選択する