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