Sdílet prostřednictvím


Rozlišení přetížení funkce (Entity SQL)

Toto téma popisuje, jak se řeší funkce Entity SQL.

Více než jednu funkci lze definovat se stejným názvem, pokud mají funkce jedinečné podpisy.

Pokud se jedná o tento případ, musí být použita následující kritéria, aby bylo možné určit, na kterou funkci odkazuje daný výraz. Tato kritéria se použijí postupně. Prvním kritériem, které platí pouze pro jednu funkci, je vyřešená funkce.

  1. Číslo parametru. Funkce má stejný počet parametrů zadaných ve výrazu.

  2. Přesná shoda typu. Každý typ argumentu funkce přesně odpovídá typu parametru nebo je literál null.

  3. Shoda u podtypu. Každý typ argumentu funkce přesně odpovídá nebo je dílčím typem typu parametru nebo argument je literál null. V případě, že se několik funkcí liší pouze v počtu požadovaných převodů podtypů, je funkce s nejmenším počtem převodů podtypů přeloženou funkcí.

  4. Shoda u podtypu nebo povýšení typu Každý typ argumentu funkce přesně odpovídá, je podtyp nebo může být povýšen na typ parametru nebo argument je literál null. V případě, že se několik funkcí liší pouze v počtu převodů a povýšení podtypů, funkce s nejmenším počtem převodů a povýšení podtypů je vyřešená funkce.

Pokud žádná z těchto kritérií nemá za následek výběr jedné funkce, není výraz vyvolání funkce nejednoznačný.

I když je možné pomocí těchto pravidel extrahovat jednu funkci, nemusí argumenty odpovídat parametrům. V tomto případě se vyvolá chyba.

U uživatelem definovaných funkcí má definice vložené funkce dotazu přednost i v případě, že modelem definovaná funkce existuje s podpisem, který je vhodnější pro uživatelem definovanou funkci.

Viz také