函数重载解析 (实体 SQL)

本主题介绍如何解析实体 SQL 函数。

只要函数具有唯一签名,就可以使用相同的名称定义多个函数。

在这种情况下,必须应用以下条件来确定给定表达式引用的函数。 这些条件按顺序应用。 仅适用于单个函数的第一个条件是解析的函数。

  1. 参数编号。 该函数在表达式中指定的参数数相同。

  2. 在类型上完全匹配。 函数的每个参数类型都与参数类型完全匹配,或为 null 文本。

  3. 在子类型上匹配。 函数的每个参数类型完全匹配或是参数类型的子类型,或者参数是 null 文本。 如果多个函数仅在所需的子类型转换数中不同,具有最小子类型转换数的函数是解析的函数。

  4. 匹配子类型或类型提升。 函数的每个参数类型完全匹配、属于子类型或可提升为参数类型,或者参数为 null 文本。 同样,如果多个函数仅在子类型转换和提升的数量上不同,具有最小子类型转换和提升数的函数是解析的函数。

如果这些条件都未导致选择单个函数,则函数调用表达式不明确。

即使可以使用这些规则提取单个函数,参数仍可能与参数不匹配。 在这种情况下,将引发错误。

对于用户定义的函数,即使模型定义的函数存在与用户定义的函数更好的匹配的签名,内联查询函数的定义也优先。

另请参阅