Откъс от вашия коментар към @ajmalmhd04 отговор
Да, документация е малко объркващо в начина, по който дефинира оператори, дефинирани от потребителя, особено тази част:
За съжаление, това означава, че можете да използвате оператори, дефинирани от потребителя, където (най-вече) можете да използвате вградени оператори, но не по същия начин (operand1 OPERATOR operand2
например) използвате вградени оператори, като <
или =
. Дефинираните от потребителя оператори, ако не ги разгледаме много внимателно, са различен начин за извикване на функции с изключение на това, че те (операторите) могат да се използват само в DML изрази (select
, insert
и така нататък). Няма да можете да ги използвате в PL/SQL директно, само чрез DML. Така че нещо подобно в PL/SQL ще доведе до PLS-00548: invalid use of operator.
if operator(<<arguments>>) = 1 then
-- something
end if;
Ползите от създаването и използването на оператори, ако не участвате в разработването на специфични за приложения сървър-базирани разширения (касети с данни), типове индекси например, не са толкова видими за мен лично. Не мога да се сетя за ситуация, в която можете да използвате оператори и не можете да използвате функции. Обратното обаче не е вярно. Може да разгледате способността на оператора да има множество обвързвания като начин да го използвате като претоварена функция. Но, от друга страна, можете лесно да постигнете същото с пакети.