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