ユーザー定義関数 (UDF) の機能を使用すれば、SQL 関数を作成して、DB2 で提供される組み込み関数群に追加することができます。 具体的には、画像や、音声、ビデオのオブジェクトに特有な操作を行う UDF を作成することができます。 たとえば、UDF を作成して、ビデオの圧縮形式を得たり、音声のサンプリング率を返したりすることが可能です。 この方法を使えば、特定タイプのオブジェクトに対しその動作を定義することができます。 たとえば、ビデオ・オブジェクトはビデオ・タイプ用に作成された関数に従って動作します。 また、イメージ・オブジェクトはイメージ・タイプ用に作成された関数に従って動作します。
UDF は、SQL CREATE FUNCTION ステートメントを使って作成します。 このステートメントでは、特にその UDF を適用するデータ・タイプを指定します。 たとえば、次のステートメントを指定すれば、マップのスケールを計算する map_scale という UDF が作成されます。 この UDF では、それが適用されるデータ・タイプとして map が指定されています。 この関数は C 言語で書かれ、その名前が EXTERNAL NAME 文節で指定されています。
CREATE FUNCTION map_scale (map) RETURNS SMALLINT EXTERNAL NAME 'scale!map' LANGUAGE C PARAMETER STYLE DB2SQL NO SQL DETERMINISTIC NO EXTERNAL ACTION
UDF は、組み込み関数と同じようにして SQL ステートメントで使用することができます。 次の例では、SQL SELECT ステートメントに map_scale UDF を指定して、grid という表の列に保管されているマップのスケールを戻します。
SELECT map_scale (grid) FROM places WHERE location='SAN JOSE, CALIFORNIA'
それぞれの DB2 エクステンダーでは、そのタイプに対して UDF 群 (つまり、画像特有の UDF、音声特有の UDF、ビデオ特有の UDF) が作成されます。 これらの UDF を SQL ステートメントで使用すれば、画像を表に保管したり、ビデオのフレーム率を入手したり、音声の注釈を追加したり、といったエクステンダー機能を要求することができます。