Výňatek z vašeho komentáře pro @ajmalmhd04 odpověď
Ano, dokumentace je trochu matoucí ve způsobu, jakým definuje uživatelem definované operátory, zejména tuto část:
Bohužel to znamená, že můžete použít uživatelem definované operátory, kde (většinou) můžete použít vestavěné operátory, ale ne stejným způsobem (operand1 OPERATOR operand2
například) používáte vestavěné operátory, jako je <
nebo =
. Uživatelsky definované operátory, pokud se na ně nedíváme velmi zblízka, jsou odlišným způsobem volání funkcí s tou výjimkou, že je (operátory) lze použít pouze v příkazech DML (select
, insert
a tak dále). Nebudete je moci používat v PL/SQL přímo, pouze prostřednictvím DML. Takže něco takového v PL/SQL povede k PLS-00548: invalid use of operator.
if operator(<<arguments>>) = 1 then
-- something
end if;
Výhody vytváření a používání operátorů, pokud se nepodílíte na vývoji aplikačně specifických serverových rozšíření (datových kazet), například indextypes, pro mě osobně nejsou tak viditelné. Nenapadá mě situace, kdy můžete používat operátory a nemůžete používat funkce. Opak však není pravdou. Můžete se podívat na schopnost operátora mít více vazeb jako způsob použití jako přetížené funkce. Ale na druhou stranu toho můžete snadno dosáhnout s balíčky.