Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Crie um operador definido pelo usuário com os lados esquerdo/direito


Trecho do seu comentário para @ajmalmhd04 answer

Sim, documentação é um pouco confuso na forma como define os operadores definidos pelo usuário, especialmente esta parte:

Infelizmente, isso significa que você pode usar operadores definidos pelo usuário onde (principalmente) você pode usar operadores internos, mas não da mesma maneira (operand1 OPERATOR operand2 por exemplo) você usa operadores integrados, como < ou = . Operadores definidos pelo usuário, se não forem observados muito de perto, são maneiras diferentes de chamar funções com a exceção de que eles (operadores) só podem ser usados ​​em instruções DML (select , insert e assim por diante). Você não poderá usá-los diretamente em PL/SQL, apenas através de DML. Então, algo assim, em PL/SQL, resultará em PLS-00548: invalid use of operator.
if operator(<<arguments>>) = 1 then
  -- something
end if;

Os benefícios de criar e usar operadores, se você não estiver envolvido no desenvolvimento de extensões baseadas em servidor específicas de aplicativos (cartuchos de dados), tipos de índice, por exemplo, não são visíveis para mim pessoalmente. Não consigo pensar em uma situação em que você possa usar operadores e não possa usar funções. O oposto não é verdade, no entanto. Você pode observar a capacidade do operador de ter várias associações como uma maneira de usá-lo como uma função sobrecarregada. Mas, por outro lado, você pode facilmente conseguir o mesmo com pacotes.