Oracle
 sql >> база данни >  >> RDS >> Oracle

Създайте дефиниран от потребителя оператор с лява/дясна страна

Откъс от вашия коментар към @ajmalmhd04 отговор

Да, документация е малко объркващо в начина, по който дефинира оператори, дефинирани от потребителя, особено тази част:

За съжаление, това означава, че можете да използвате оператори, дефинирани от потребителя, където (най-вече) можете да използвате вградени оператори, но не по същия начин (operand1 OPERATOR operand2 например) използвате вградени оператори, като < или = . Дефинираните от потребителя оператори, ако не ги разгледаме много внимателно, са различен начин за извикване на функции с изключение на това, че те (операторите) могат да се използват само в DML изрази (select , insert и така нататък). Няма да можете да ги използвате в PL/SQL директно, само чрез DML. Така че нещо подобно в PL/SQL ще доведе до PLS-00548: invalid use of operator.

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

Ползите от създаването и използването на оператори, ако не участвате в разработването на специфични за приложения сървър-базирани разширения (касети с данни), типове индекси например, не са толкова видими за мен лично. Не мога да се сетя за ситуация, в която можете да използвате оператори и не можете да използвате функции. Обратното обаче не е вярно. Може да разгледате способността на оператора да има множество обвързвания като начин да го използвате като претоварена функция. Но, от друга страна, можете лесно да постигнете същото с пакети.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли начин да се преодолее DSRA9010E 'setReadOnly' не се поддържа от изключението WebSphere?

  2. Синтаксисът на Oracle отляво свързва три или повече таблици

  3. Oracle тригери - проблем с мутиращи таблици

  4. Какво означава изберете count(1) от table_name във всяка база данни?

  5. използвайки sqlldr от java