本主题介绍如何解析实体 SQL 函数。
只要函数具有唯一签名,就可以使用相同的名称定义多个函数。
在这种情况下,必须应用以下条件来确定给定表达式引用的函数。 这些条件按顺序应用。 仅适用于单个函数的第一个条件是解析的函数。
参数编号。 该函数在表达式中指定的参数数相同。
在类型上完全匹配。 函数的每个参数类型都与参数类型完全匹配,或为 null 文本。
在子类型上匹配。 函数的每个参数类型完全匹配或是参数类型的子类型,或者参数是 null 文本。 如果多个函数仅在所需的子类型转换数中不同,具有最小子类型转换数的函数是解析的函数。
匹配子类型或类型提升。 函数的每个参数类型完全匹配、属于子类型或可提升为参数类型,或者参数为 null 文本。 同样,如果多个函数仅在子类型转换和提升的数量上不同,具有最小子类型转换和提升数的函数是解析的函数。
如果这些条件都未导致选择单个函数,则函数调用表达式不明确。
即使可以使用这些规则提取单个函数,参数仍可能与参数不匹配。 在这种情况下,将引发错误。
对于用户定义的函数,即使模型定义的函数存在与用户定义的函数更好的匹配的签名,内联查询函数的定义也优先。