SQL для начинающих



       

Хранимые функции



Хранимые функции

Хранимые функции (stored functions) аналогичны хранимым процедурам. Вместе они называются хранимыми подпрограммами. Они имеют ряд отличий, например, они отличаются по способу их вызова. Хранимые процедуры вызываются в операторе CALL, а хранимые функции могут являться аргументом оператора SQL. Ниже представлен пример определения функции, сопровождаемый примером обращения к этой функции.

CREATE FUNCTION PurchaseHistory (CustID)

    RETURNS CHAR VARYING (200)

    BEGIN

        DECLARE purch CHAR VARYING (200)

            DEFAULT '' ;

        FOR x AS SELECT *

                FROM transaction t

                WHERE t.customerID = CustID

        DO

            IF x.description <> ''

              THEN SET purch=purch ',' ;

            END IF ;

           SET purch=purch x.description ;

        END FOR

        RETURN purch ;

END ;

Функция, заданная подобным образом, сводит воедино описания всех покупок, произведенных клиентом с определенным идентификационным номером, выбранным из таблицы TRANSACTIONS. Следующая команда, содержащая вызов функции PurchaseHistory, заносит в таблицу информацию о всех покупках, сделанных клиентом с идентификационным номером 314259:

SET customerID=3142 59 ;

UPDATE customer

        SET history=PurchaseHistory (customerlD)

        WHERE customerID=314259 ;



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