Хранимые модули
Хранимые модули
Хранимые модули (stored modules) могут содержать множество подпрограмм, т.е. процедур и (или) функций SQL. Каждый пользователь с полномочиями на выполнение модуля имеет доступ ко всем подпрограммам этого модуля. Полномочия на выполнение отдельных подпрограмм модуля предоставляться не могут. Ниже приведен пример хранимого модуля.
CREATE MODULE mod1
PROCEDURE MatchScore
(IN white CHAR (20),
IN black CHAR (20),
IN result CHAR (3),
OUT winner CHAR (5) )
BEGIN ATOMIC
CASE result
WHEN '1-0' THEN
SET winner = 'white' ;
WHEN '1-0' THEN
SET winner = 'black' ;
ELSE
SET winner = 'draw' ;
END CASE
END ;
FUNCTION PurchaseHistory (CustID)
RETURNS CHAR VARYING (200)
BEGIN
DECLARE purch CHAR VARYING (200)
DEFAULT '' ;
FOR X AS SELECT *
FROM transaction t
WHERE t.cuStomerlD = CustID
DO
IF x.description <> ''
THEN SET purch = purch | | ' . ' ;
END IF;
SET purch = purch x.description ;
END FOR
RETURN purch ;
END ;
END MODULE ;
Подпрограммы данного модуля никак не связаны между собой. Вообще говоря, подпрограммы можно разнести по разным модулям или собрать в один модуль, независимо от того, есть у них что-нибудь общее или нет.