《Oracle命令语法速查》【 CREATE TYPE 】

タイプオブジェクトを作成する


(可変長配列型)
CREATE [ OR REPLACE ] TYPE [ スキーマ . ] タイプ名 →
→ { IS | AS } ┬ VARRAY        ┬ ( 要素数 ) OF <DATATYPE句> ;
               └ VARYING ARRAY ┘

(ネスト表型)
CREATE [ OR REPLACE ] TYPE [ スキーマ . ] タイプ名 →
→ { IS | AS } TABLE OF <DATATYPE句> ;

(オブジェクト型)
CREATE [ OR REPLACE ] TYPE [ スキーマ . ] タイプ名 →
→┬──────────────────┬→
  └ AUTHID { CURRENT_USER | DEFINER }  ┘
  [ オブジェクトを実行者の権限で実行する / 所有者の権限で実行する ]
→┬ { IS | AS } OBJECT ───────────┬→
  │[ ルートオブジェクトを作成する         ]│
  └ UNDER [ スキーマ . ] 上位タイプ名  ───┘
     [ 指定したタイプのサブタイプを作成する ]
→ [ EXTERNAL NAME java_ext_name LANGUAGE JAVA USING ┬ SQLData ──┬ ] →
                                                     ├ CustomDatum ┤
                                                     └ OraData ──┘
  [ SQLJオブジェクト型のファンクション / プロシージャの指定 ]
→┬───────────────────────────────┬→
  └ ( ┬ 属性名 <DATATYPE句>  [ EXTERNAL NAME ' field_name' ] ┬ ) ┘
       │[ オブジェクトを構成するデータ項目属性を宣言する ]  │
       ├ (*1) ────────────────────────┤
       └ ← , ────────────────────────┘
→┬────────┬┬───────────┬ ;
  └ [ NOT ] FINAL  ┘└ [ NOT ] INSTANTIABLE ┘

(*1)[ オブジェクトを構成するメンバー関数を宣言する ]
→┬──────────┬┬────────┬┬───────────┬→
  └ [ NOT ] OVERRIDING ┘└ [ NOT ] FINAL  ┘└ [ NOT ] INSTANTIABLE ┘
→┬┬ MEMBER ┬ { プロシージャ仕様部 | ファンクション仕様部 }  ┬→
  │└ STATIC ┘                                                │
  ├ { MAP | ORDER MEMBER } ファンクション仕様部  ───────┤
  └ ← ────────────────────────────┘
→┬────────────────────────────────┬→
  └ , PRAGMA RESTRICT_REFERENCES (┬ メソッド名 ┬ , ┬ RNDS   ┬) ┘
    [ コンパイラ指示を指定する ] └ DEFAULT  ─┘   ├ WINDS  ┤
                                                      ├ RNPS   ┤
                                                      ├ WINPS  ┤
                                                      ├ TRUST  ┤
                                                      └ ← , ─┘

(不完全なオブジェクト型)
CREATE [ OR REPLACE ] TYPE [ スキーマ . ] タイプ名 ;