Fragment Twojego komentarza do @ajmalmhd04 odpowiedź
Tak, dokumentacja jest nieco mylący w sposobie definiowania operatorów zdefiniowanych przez użytkownika, szczególnie w tej części:
Niestety oznacza to, że możesz używać operatorów zdefiniowanych przez użytkownika, gdzie (głównie) możesz używać operatorów wbudowanych, ale nie w ten sam sposób (operand1 OPERATOR operand2
na przykład) używasz wbudowanych operatorów, takich jak <
lub =
. Operatory zdefiniowane przez użytkownika, jeśli nie przyjrzymy się im bardzo dokładnie, są innym sposobem wywoływania funkcji, z wyjątkiem tego, że mogą być używane tylko w instrukcjach DML (select
, insert
i tak dalej). Nie będziesz mógł ich używać bezpośrednio w PL/SQL, tylko przez DML. Tak więc coś takiego w PL/SQL spowoduje PLS-00548: invalid use of operator.
if operator(<<arguments>>) = 1 then
-- something
end if;
Korzyści z tworzenia i używania operatorów, jeśli nie jesteś zaangażowany w opracowywanie rozszerzeń serwerowych specyficznych dla aplikacji (kasety danych), na przykład typów indeksów, nie są widoczne dla mnie osobiście. Nie potrafi wyobrazić sobie sytuacji, w której możesz używać operatorów i nie możesz używać funkcji. Jednak przeciwieństwo nie jest prawdą. Możesz spojrzeć na zdolność operatora do posiadania wielu powiązań jako sposób używania go jako przeciążonej funkcji. Ale z drugiej strony możesz łatwo osiągnąć to samo dzięki pakietom.