Воссоединение SQL в 1995 г. люди, проекты, политика

       

Функции по сравнению с методами


В SQL:1999 проводится важное различие между "обычным" вызываемыми из SQL функциями и вызываемыми из SQL методами. Коротко говоря, метод - это функция с несколькими ограничениями и усилениями. Коротко охарактеризуем различия между этими двумя типами подпрограмм:

  • Методы тесно привязаны к одному определяемому пользователем типу данных, а функции - нет.
  • Определяемый пользователем тип, к которому привязывается метод, - это тип данных особого аргумента метода (первого, необъявляемого аргумента); ни один аргумент функции не является особым в этом смысле.
  • Функции могут быть полиморфными (перегруженными), но конкретная функция выбирается во время компиляции путем проверки типов всех аргументов вызова функции и выбора "наиболее подходящей" функции среди возможных кандидатов (имеющих то же имя и то же число параметров); методы тоже могут быть полиморфными, но то, что определяющий тип их особого аргумента может быть определен только во время выполнения, заставляет откладывать выбор точного метода для вызова до времени выполнения; все остальные аргументы разрешаются во время компиляции на основе объявленных типов аргументов.
  • Методы должны храниться в той же схеме, где хранится определения структурного типа, с которым они тесно связаны; функции не ограничены конкретной схемой.
  • И функции, и методы могут быть написаны на SQL (с использованием вычислительно полных операторов SQL/PSM) или на любом из нескольких более традиционных языков программирования, включая Java.



    Содержание раздела