Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Utwórz operator zdefiniowany przez użytkownika z lewą/prawą stroną

Fragment Twojego komentarza do @ajmalmhd04 odpowiedź

Tak, dokumentacja jest nieco mylący w sposobie definiowania operatorów zdefiniowanych przez użytkownika, szczególnie w tej części:

Niestety oznacza to, że możesz używać operatorów zdefiniowanych przez użytkownika, gdzie (głównie) możesz używać operatorów wbudowanych, ale nie w ten sam sposób (operand1 OPERATOR operand2 na przykład) używasz wbudowanych operatorów, takich jak < lub = . Operatory zdefiniowane przez użytkownika, jeśli nie przyjrzymy się im bardzo dokładnie, są innym sposobem wywoływania funkcji, z wyjątkiem tego, że mogą być używane tylko w instrukcjach DML (select , insert i tak dalej). Nie będziesz mógł ich używać bezpośrednio w PL/SQL, tylko przez DML. Tak więc coś takiego w PL/SQL spowoduje PLS-00548: invalid use of operator.

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

Korzyści z tworzenia i używania operatorów, jeśli nie jesteś zaangażowany w opracowywanie rozszerzeń serwerowych specyficznych dla aplikacji (kasety danych), na przykład typów indeksów, nie są widoczne dla mnie osobiście. Nie potrafi wyobrazić sobie sytuacji, w której możesz używać operatorów i nie możesz używać funkcji. Jednak przeciwieństwo nie jest prawdą. Możesz spojrzeć na zdolność operatora do posiadania wielu powiązań jako sposób używania go jako przeciążonej funkcji. Ale z drugiej strony możesz łatwo osiągnąć to samo dzięki pakietom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wygenerować instrukcje INSERT z zapytania przy użyciu SQLcl (Oracle)

  2. Czy substr czy LIKE są szybsze w Oracle?

  3. Obsługa strefy czasowej w aplikacji internetowej

  4. wyzwalacze edycji krzyżowej do przodu w R12.2

  5. Pokaż kolumny z bieżącego i poprzedniego roku w Oracle