CREATE FUNCTION ステートメント

CREATE FUNCTION ステートメントは、ユーザー定義の関数または関数テンプレートを、現行サーバーで登録または定義する場合に使用されます。

このステートメントを使用して作成できる関数には、異なる 5 つのタイプがあります。 これらのそれぞれについて、個々に説明します。

  • 外部スカラー。 この関数はプログラミング言語で書かれ、1 つのスカラー値を戻します。 外部の実行可能プログラムが、関数の種々の属性を伴ってデータベースに登録されます。
  • 外部表。 この関数はプログラミング言語で書かれ、完全な表を戻します。 外部の実行可能プログラムが、関数の種々の属性を伴ってデータベースに登録されます。
  • OLE DB 外部表。 ユーザー定義の OLE DB 外部表関数はデータベースに登録されて、 OLE DB Provider からデータをアクセスします。
  • ソースまたはテンプレート。 ソース関数は、データベースに既に登録されている他の関数 (組み込み、外部、SQL、 またはソースのいずれか) を呼び出すことによってインプリメントされます。

    関数テンプレート という部分関数を作成し、 戻される値のタイプを定義することができますが、実行可能コードを含めることはできません。 ユーザーはこれをフェデレーテッド・システム内のデータ・ソース関数にマップし、 フェデレーテッド・データベースからそのデータ・ソース関数を呼び出せるようにします。 関数テンプレートは、 フェデレーテッド・サーバーとして指定されたアプリケーション・サーバーにだけ登録できます。

  • SQL スカラー、表、または行。 関数本体は SQL で書かれ、データベースに登録で定義されます。 これは、スカラー値、表、または単一の行を戻します。
  • 集約インターフェース。 集約インターフェース関数は、コンポーネント・ルーチンと呼ばれるいくつかの外部プロシージャーと 1 つの外部関数を呼び出すという形で実装します。

CREATE FUNCTION ステートメントを難読化形式でサブミットできます。 難読化されたステートメントでは、関数名とそのパラメーターのみを判読できます。 残りのステートメントは、読み取れないようにエンコードされますが、データベース・サーバーによりデコードできます。 難読化ステートメントの作成は、DBMS_DDL.WRAP 関数を呼び出すことによって行えます。