次の関数の定義と問合わせについて考えてみます。
CREATE FUNCTION Test.MyUDF (a INT, b INT, c INT) RETURNS INT LANGUAGE SQL CONTAINS SQL DETERMINISTIC SQL SECURITY DEFINER COLLATION INVOKER INLINE TYPE 1 RETURN a + b - c; SELECT Test.MyUDF(t1.a1, t2.a2, t3.a3) FROM t1, t2, t3;
SELECT文を実行するユーザーは、次の権限を持っている必要があります。
- t1、t2、およびt3テーブル、これらのテーブルを格納するデータベース、またはt1.a1、t2.a2、およびt3.a3列に対するSELECT権限。
- MyUDF、またはTestという名前のデータベースに対するEXECUTE FUNCTION権限。
UDF自体の定義がデータベース オブジェクトを参照しないため、作成者や所有者の権限は確認されません。