Oracle
 sql >> Database >  >> RDS >> Oracle

Crea un operatore definito dall'utente con i lati sinistro/destro

Estratto dal tuo commento a @ajmalmhd04 risposta

Sì, documentazione crea un po' di confusione nel modo in cui definisce gli operatori definiti dall'utente, in particolare questa parte:

Sfortunatamente, significa che puoi usare operatori definiti dall'utente dove (principalmente) puoi usare operatori integrati ma non allo stesso modo(operand1 OPERATOR operand2 per esempio) utilizzi operatori integrati, come < o = . Gli operatori definiti dall'utente, se non guardarli molto da vicino, sono modi diversi di chiamare le funzioni con l'eccezione che essi (operatori) possono essere utilizzati solo nelle istruzioni DML (select , insert e così via). Non sarai in grado di usarli direttamente in PL/SQL, solo tramite DML. Quindi, qualcosa del genere, in PL/SQL risulterà in PLS-00548: invalid use of operator.

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

I vantaggi della creazione e dell'utilizzo di operatori, se non si è coinvolti nello sviluppo di estensioni basate su server specifiche per applicazioni (cartucce di dati), ad esempio i tipi di indice, non sono visibili a me personalmente. Non riesco a pensare a una situazione in cui puoi usare gli operatori e non puoi usare le funzioni. Tuttavia non è vero il contrario. Puoi considerare la capacità dell'operatore di avere più collegamenti come un modo per usarlo come una funzione sovraccaricata. Ma, d'altra parte, puoi facilmente ottenere lo stesso con i pacchetti.