このトピックでは、Entity SQL 関数の解決方法について説明します。
それぞれのシグネチャが一意であれば、複数の関数を同じ名前で定義することは可能です。
その場合、式でどの関数が参照されているのかを判断するには、以下の基準を適用する必要があります。これらの基準は順番に適用されます。1 つの関数のみに該当する最初の基準が、どの関数に解決されるかを決定します。
パラメータの数。関数が、式で指定されているパラメータ数と同じ数のパラメータを含んでいます。
型の完全一致。関数の各引数の型が、パラメータの型と完全に一致するか、NULL リテラルになっています。
サブタイプの一致。関数の各引数の型が、パラメータの型に完全に一致するか、そのサブタイプになっています。または、引数が NULL リテラルになっています。複数の関数が、必要なサブタイプの型変換数においてのみ異なる場合は、最も少ないサブタイプの型変換数を持つ関数が、解決された関数になります。
サブタイプまたは型の昇格の一致。関数の各引数の型が、パラメータの型に完全に一致しているか、そのサブタイプであるか、その型に昇格できます。または、引数が NULL リテラルになっています。ここでも、複数の関数が、サブタイプの型変換および昇格の数においてのみ異なる場合は、最も少ないサブタイプの型変換および昇格の数を持つ関数が、解決された関数になります。
これらの基準のいずれによっても 1 つの関数を選択できない場合、関数の呼び出し式はあいまいになります。
これらの規則を使用して 1 つの関数を抽出できても、引数がパラメータに一致しない場合があります。この場合は、エラーが発生します。