重载 UDx
您可能希望 UDx 接受多个不同的签名(参数集)。例如,您可能希望 UDx 接受以下内容:
-
一个或多个可选参数。
-
一个或多个参数(可以是多个数据类型之一)。
-
完全不同的签名(例如,所有 INTEGER 或所有 VARCHAR)。
可以通过以下方法创建具有此行为的函数:创建分别接受不同的签名(参数的个数和数据类型)的多个工厂类。然后,您可以将单个 SQL 函数名称与所有工厂类相关联。只要每个工厂定义的签名都是唯一的,您就可以使用相同的 SQL 函数名称来引用多个工厂类。当用户调用 UDx 时,Vertica 会将用户所提供的实参的数量和类型与函数的每个工厂类所接受的实参进行匹配。如果有一个匹配,Vertica 将使用它来实例化函数类以处理数据。
多个工厂类可以实例化相同的函数类,所以您可以重复使用能够处理多个参数集的一个函数分类,然后为每个函数签名创建工厂类。如果您需要,您还可以创建多个函数类。
请参阅 C++ 示例:重载 UDx 和 Java 示例:重载 UDx 示例。