Разработка и сопровождение баз данных в среде СУБД MS SQL Server 2000. Сивохин А.В - 113 стр.

UptoLike

1.9. Создание пользовательских функций
Задание 1.9.1. Создание функции Func1 типа Scalar, которая будет иметь три
входных параметра. Первые два параметра будут иметь тип данных bigint,
третий параметртип данных char(1) и значение по умолчанию "*".
Функция будет возвращать значение типа данных bigint и выполнять четыре
основных арифметических операции: сложение, вычитание, умножение и деление
двух значений, подаваемых на вход
функции. Операция, которую необходимо
выполнить, будет задаваться с помощью третьего параметра, который может
принимать соответственно значения " + ", " -", "*" и "/".
CREATE FUNCTION Func1(
@Varl bigint,
@Var2 bigint,
@Oper chard) = "*")
RETURNS bigint
AS
BEGIN
DECLARE @Var3 bigint
SET @Var3 =
CASE @Oper
WHEN "+" THEN @Varl + @Var2
WHEN "-" THEN @Varl - @Var2
WHEN "*" THEN @Varl * @Var2
WHEN "/" THEN @Varl / @Var2
ELSE
0
END
RETURN @Var3
END
Вызвать созданную функцию можно следующим образом
SELECT dbo.Funcl(4, 5, '+'),
dbo.Funcl(3, 7, '*') - dbo.Funcl(64, 4, '.')*2
Будет возвращен следующий результат:
9 -11
(1 row(s) affected)
Задание 1.9.2. Создание функции Func2 типа Inline, которая возвращает
список идентификационных номеров авторов, (столбец au_id), их фамилий
(столбец au_lname) и имен (столбец au_fname), живущих в определенном
штате.
                     1.9. Создание пользовательских функций
    Задание 1.9.1. Создание функции Func1 типа Scalar, которая будет иметь три
входных параметра. Первые два параметра будут иметь тип данных bigint,
третий параметр — тип данных char(1) и значение по умолчанию "*".
Функция будет возвращать значение типа данных bigint и выполнять четыре
основных арифметических операции: сложение, вычитание, умножение и деление
двух значений, подаваемых на вход функции. Операция, которую необходимо
выполнить, будет задаваться с помощью третьего параметра, который может
принимать соответственно значения " + ", " -", "*" и " / " .
    CREATE FUNCTION Func1(
                           @Varl bigint,
                           @Var2 b i g i n t ,
                           @Oper chard) = "*")
    RETURNS bigint
    AS
    BEGIN
     DECLARE @Var3 bigint
     SET @Var3 =
         CASE @Oper
          WHEN "+" THEN @Varl + @Var2
          WHEN "-" THEN @Varl - @Var2
          WHEN "*" THEN @Varl * @Var2
          WHEN "/" THEN @Varl / @Var2
          ELSE
                0
         END
     RETURN @Var3
    END
    Вызвать созданную функцию можно следующим образом
    SELECT dbo.Funcl(4, 5, '+'),
           dbo.Funcl(3, 7, '*') - dbo.Funcl(64, 4, '.')*2
    Будет возвращен следующий результат:
    9                       -11
    (1 row(s) affected)

    Задание 1.9.2. Создание функции Func2 типа I n l i n e , которая возвращает
список идентификационных номеров авторов, (столбец au_id), их фамилий
(столбец a u _ l n a m e ) и имен (столбец au_fname), живущих в определенном
штате.