UDF dans une requête SQL

Une fois que vous avez enregistré un UDF dans votre système, vous et les autres utilisateurs autorisés pouvez appeler la fonction de la même manière que les fonctions intégrées SQL de Netezza Performance Server Pour utiliser un UDF, les utilisateurs doivent disposer du privilège Execute pour l'objet FUNCTION ou pour l'UDF spécifique.

Note : Par défaut, le compte d'utilisateur admin a un accès exécutif à toutes les fonctions et à tous les agrégats définis par l'utilisateur. Le compte d'utilisateur qui a enregistré un UDF dispose également d'un accès d'exécution à cet UDF. Le propriétaire de la base de données a le droit d'exécuter les UDF dans la base de données et, pour les systèmes qui prennent en charge plusieurs schémas, le propriétaire du schéma a le droit d'exécuter tous les UDF dans le schéma. D'autres utilisateurs peuvent se voir accorder le privilège d'exécuter des UDF spécifiques ou tous les UDF.
Pour l'exemple de fonction " customername, créez d'abord un tableau type contenant les données à traiter par la fonction. Par exemple :
CREATE TABLE customers (a INT, b VARCHAR(200));
INSERT INTO customers VALUES (1, 'Customer A');
INSERT INTO customers VALUES (2, 'Customer B');
INSERT INTO customers VALUES (3, 'Customer CBA');
INSERT INTO customers VALUES (4, 'Customer ABC');
Vous pouvez ensuite exécuter l'exemple de fonction " customername, comme suit :
MYDB.SCHEMA(MYUSER)=> SELECT * FROM customers WHERE CustomerName(b) = 1;
La sortie de l'exemple est la suivante :
 A | B
---+------------------
 1 | Customer A
 4 | Customer ABC
(2 rows)

Vous pouvez utiliser des noms pleinement qualifiés pour accéder à des fonctions dans d'autres bases de données et schémas. L'utilisateur qui exécute la requête doit avoir des privilèges d'accès à l'UDX dans l'autre base de données. Par exemple :

DEV.USER2(USER2)=> SELECT * FROM mydb.schema.customers WHERE
mydb.schema.CustomerName(b) = 1;