Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer un opérateur défini par l'utilisateur avec les côtés gauche/droit

Extrait de votre commentaire à @ajmalmhd04 réponse

Oui, documentation est un peu déroutant dans la façon dont il définit les opérateurs définis par l'utilisateur, en particulier cette partie :

Malheureusement, cela signifie que vous pouvez utiliser des opérateurs définis par l'utilisateur où (principalement) vous pouvez utiliser des opérateurs intégrés mais pas de la même manière (operand1 OPERATOR operand2 par exemple) vous utilisez des opérateurs intégrés, comme < ou = . Les opérateurs définis par l'utilisateur, si vous ne les regardez pas de très près, sont une manière différente d'appeler des fonctions à l'exception qu'ils (les opérateurs) ne peuvent être utilisés que dans les instructions DML (select , insert et ainsi de suite). Vous ne pourrez pas les utiliser directement en PL/SQL, uniquement via DML. Ainsi, quelque chose comme ça, en PL/SQL entraînera PLS-00548: invalid use of operator.

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

Les avantages de la création et de l'utilisation d'opérateurs, si vous n'êtes pas impliqué dans le développement d'extensions basées sur le serveur spécifiques à l'application (cartouches de données), les types d'index par exemple, ne sont pas visibles pour moi personnellement. Je ne peux pas penser à une situation où vous pouvez utiliser des opérateurs et ne pouvez pas utiliser des fonctions. Le contraire n'est pas vrai, cependant. Vous pouvez considérer la capacité de l'opérateur à avoir plusieurs liaisons comme un moyen de l'utiliser comme une fonction surchargée. Mais, d'un autre côté, vous pouvez facilement obtenir la même chose avec des packages.