例: UDF内のEXTERNAL SECURITY句の作成および使用 - Teradata Database - Teradata Vantage NewSQL Engine - 例: UDF内のEXTERNAL SECURITY句の作成および使用、CREATE FUNCTION (外部形式)およびREPLACE FUNCTION (外部形式)構文の文。

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

次の外部許可オブジェクトを定義したとします。

     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は、関数が必要な情報を入手するために読み取る外部データへのアクセス権限を持っています。