Firmas de agregados y funciones
Cada función y agregado definidos por el usuario tiene una firma, es decir, una identificación única que tiene la forma " <udx-name>(<argument
type name list>).
Las firmas deben ser exclusivas en la base de datos, y no pueden ser duplicados de la firma de otros UDF,
otras UDA, ni de otras funciones ni agregados incorporados. El componente " <argument type name list> " no considera diferenciadores los tamaños de los tipos de datos. Por ejemplo, no puede crear dos funciones llamadas " Myfunc( numeric(3,2)
) y " Myfunc( numeric(4,1) ) " en la misma base de datos.
Nota: Si su sistema admite varios esquemas, puede crear funciones que compartan la misma firma en diferentes esquemas de la misma base de datos. Se recomienda evitar la creación de duplicados de la misma función en distintos esquemas; puede utilizar nombres totalmente calificados para hacer referencia a una función en un esquema diferente, si el usuario tiene privilegios para acceder al otro esquema. Esto puede contribuir a reducir la sobrecarga de mantener varias copias de la misma función.
Si hay casos de uso comunes donde una función o agregado deben aceptar series o números de tamaños diferentes, puede diseñar el UDX para que acepte el mayor
de los valores posibles (como el ejemplo customername de la sección anterior), o puede crear un UDX con un nombre diferente para procesar un tamaño de datos diferente. Por ejemplo:
MYDB.SCHEMA(MYUSER)=> CREATE FUNCTION CustomerNameShort(varchar(256))
RETURNS int4 LANGUAGE CPP PARAMETER STYLE NPSGENERIC API VERSION 2
EXTERNAL CLASS NAME 'CCustomerName'
EXTERNAL HOST OBJECT '/home/nz/udx_files/customername.o_x86'
EXTERNAL SPU OBJECT '/home/nz/udx_files/customername.o_spu10';