%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;
幅広いアプリケーションでタイプをどのように使用するかによって異なります。