《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句>            ──────────┘