Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erstellen Sie einen benutzerdefinierten Operator mit linken/rechten Seiten

Auszug aus Ihrem Kommentar zu @ajmalmhd04 Antwort

Ja, Dokumentation ist etwas verwirrend in der Art und Weise, wie benutzerdefinierte Operatoren definiert werden, insbesondere dieser Teil:

Leider bedeutet dies, dass Sie benutzerdefinierte Operatoren verwenden können, wo (meistens) Sie integrierte Operatoren verwenden können, aber nicht auf die gleiche Weise (operand1 OPERATOR operand2 zum Beispiel) verwenden Sie integrierte Operatoren wie < oder = . Benutzerdefinierte Operatoren, wenn man sie nicht sehr genau betrachtet, sind eine andere Art, Funktionen aufzurufen, mit der Ausnahme, dass sie (Operatoren) nur in DML-Anweisungen verwendet werden können (select , insert und so weiter). Sie können sie nicht direkt in PL/SQL verwenden, sondern nur über DML. So etwas in der Art führt in PL/SQL zu PLS-00548: invalid use of operator.

if operator(<<arguments>>) = 1 then
  -- something
end if;

Die Vorteile der Erstellung und Verwendung von Operatoren, wenn Sie nicht an der Entwicklung anwendungsspezifischer serverbasierter Erweiterungen (Datenkassetten) beteiligt sind, zum Beispiel Indextypen, sind für mich persönlich nicht so sichtbar. Kann mir keine Situation vorstellen, in der Sie Operatoren verwenden können und Funktionen nicht verwenden können. Gegenteil ist jedoch nicht wahr. Sie können sich die Fähigkeit des Operators ansehen, mehrere Bindungen zu haben, um ihn als überladene Funktion zu verwenden. Aber auf der anderen Seite können Sie dasselbe auch mit Paketen erreichen.