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

Opret brugerdefineret operator med venstre/højre sider

Uddrag fra din kommentar til @ajmalmhd04 svar

Ja, dokumentation er lidt forvirrende i den måde, den definerer brugerdefinerede operatorer på, især denne del:

Desværre betyder det, at du kan bruge brugerdefinerede operatorer, hvor du (for det meste) kan bruge indbyggede operatorer, men ikke på samme måde(operand1 OPERATOR operand2 for eksempel) bruger du indbyggede operatorer, såsom < eller = . Brugerdefinerede operatører, hvis ikke se dem meget nøje, er forskellige måder at kalde funktioner på med den undtagelse, at de(operatører) kun kan bruges i DML-sætninger (select , insert og så videre). Du vil ikke være i stand til at bruge dem direkte i PL/SQL, kun gennem DML. Så noget som dette i PL/SQL vil resultere i PLS-00548: invalid use of operator.

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

Fordelene ved at oprette og bruge operatører, hvis du ikke er involveret i at udvikle applikationsspecifikke server-baserede udvidelser (datapatroner), f.eks. indekstyper, som ikke er så synlige for mig personligt. Kan ikke komme i tanke om en situation, hvor du kan bruge operatører og ikke kan bruge funktioner. Det modsatte er dog ikke sandt. Du kan se på operatørens evne til at have flere bindinger som en måde at bruge det på som en overbelastet funktion. Men på den anden side kan du sagtens opnå det samme med pakker.



  1. Hvordan fjerner man kun kontinuerlige dubletter, men ikke alle dubletter i en udvalgt forespørgsel (MySQL)?

  2. Foreach loop bruger streng til at udlæse XML

  3. INSERT INTO mislykkes med node-mysql

  4. Kan ikke oprette forbindelse til MySQL - Glassfish og Hibernate