《Oracle命令语法速查》【 CREATE FUNCTION 】
ストアドファンクションを作成する
CREATE [ OR REPLACE ] FUNCTION [ スキーマ . ] ファンクション名 →
→┬────────────────────────────────┬→
└ ( ┬ 引数名 [ IN | OUT | IN OUT ] [ NOCOPY ] <DATATYPE句> ┬ ) ┘
└ ← , ────────────────────────┘
[ パラメータの名前と型を指定する ]
→ RETURN <DATATYPE句> →
[ 戻り値の型を指定する ]
→┬──────────────────────────────────────┬→
├ AUTHID { CURRENT_USER | DEFINER } ────────────────────┤
│[ ファンクションを実行者の権限で実行する / 所有者の権限で実行する ] │
├ PARALLEL_ENABLE [ ( PARTITION 引数 BY ┬ ANY ──────────┬) ] → │
│ ├ HASH ─┬ ( ┬ 列名 ┬ ) ┘ │
│ └ RANGE ┘ └ ← , ┘ │
│ →┬ ORDER ┬ BY ( ┬ 列名 ┬ ) ──┤
│ └ CLUSTER ┘ └ ← , ┘ │
│[ パラレル実行用最適化ヒントを設定する ] │
└ DETERMINISTIC ──────────────────────────────┘
[ 同じ引数を与えた場合に同じ結果を返すことを保証する ]
→┬ AGGREGATE USING [ スキーマ . ] 実装タイプ ──────┬ ;
│[ 集計ファンクション指定 ]│
├ PIPELINED USING [ スキーマ . ] 実装タイプ │
│[ 表ファンクション指定 ]│
└┬ IS ┬┬ pl/sql_subprogram_body ──────────┤
└ AS ┘│[ ファンクション詳細を PL/SQL で記述する ] │
└<CALL SPEC句> ──────────┘