次の外部許可オブジェクトを定義したとします。
CREATE AUTHORIZATION DEFINER sales USER 'salesdept' PASSWORD 'secret';
さらに、次に示すCのUDFを作成します。
CREATE FUNCTION sales_collect ( store_number INTEGER, item_no INTEGER) RETURNS INTEGER LANGUAGE C NO SQL EXTERNAL 'cs!salecol!salecollector.c' PARAMETER STYLE SQL EXTERNAL SECURITY DEFINER sales;
この関数は、特定の店舗の特定の商品番号(item_no)の販売に関連したデータを収集し、販売された商品の数を返します。考えられるシナリオ(無理に作った感は否めませんが)としては、ネットワーク インターフェースを介して関数とストアを通信させるというものを挙げられるかもしれません。関数はDEFINERコンテキストを使って作成されます。つまり、ユーザーがそのデータベース アカウントにログオンして、この関数を呼び出すSQL要求を実行するときには、呼び出しSQL要求を実行しているユーザーに関連するログオンIDではなく、セールスの許可オブジェクトに関連したログオンIDが使用されるということです。この例の場合、OSユーザーsalesdeptは、関数が必要な情報を入手するために読み取る外部データへのアクセス権限を持っています。