Пример 12.5. Процедура с входными параметрами и значениями по умолчанию. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %.
Пример 12.4. Процедура для уменьшения цены товара заданного типа в соответствии с указанным %.
Пример 12.3. Процедура для получения названий и стоимости товаров, которые приобрел заданный клиент.
Для обращения к процедуре можно использовать команды:
EXEC my_proc3 'Иванов' или
my_proc3 @k='Иванов'
Пример 12.4. Процедура с входными параметрами. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %.
CREATE PROC my_proc4
@t VARCHAR(20), @p FLOAT
AS
UPDATE Товар SET Цена=Цена*(1-@p)
WHERE Тип=@t
Для обращения к процедуре можно использовать команды:
EXEC my_proc4 'Вафли',0.05 или
EXEC my_proc4 @t='Вафли', @p=0.05
Пример 12.5. Процедура с входными параметрами и значениями по умолчанию. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %.
CREATE PROC my_proc5
@t VARCHAR(20)=’Конфеты',
@p FLOAT=0.1
AS
UPDATE Товар SET Цена=Цена*(1-@p)
WHERE Тип=@t
Для обращения к процедуре можно использовать команды:
EXEC my_proc5 'Вафли',0.05 или
EXEC my_proc5 @t='Вафли', @p=0.05 или
EXEC my_proc5 @p=0.05
В этом случае уменьшается цена конфет (значение типа не указано при вызове процедуры и берется по умолчанию).
EXEC my_proc5
В последнем случае оба параметра (и тип, и проценты) не указаны при вызове процедуры, их значения берутся по умолчанию.
Пример 12.6. Процедура с входными и выходными параметрами. Создать процедуру для определения общей стоимости товаров, проданных за конкретный месяц.
CREATE PROC my_proc6
@m INT,
@s FLOAT OUTPUT
AS
SELECT @s=Sum(Товар.Цена*Сделка.Количество)
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
GROUP BY Month(Сделка.Дата)
HAVING Month(Сделка.Дата)=@m
Для обращения к процедуре можно использовать команды:
DECLARE @st FLOAT
EXEC my_proc6 1,@st OUTPUT
SELECT @st
Этот блок команд позволяет определить стоимость товаров, проданных в январе ( входной параметр месяц указан равным 1).
Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник.
Сначала разработаем процедуру для определения фирмы, где работает сотрудник.
CREATE PROC my_proc7
@n VARCHAR(20),
@f VARCHAR(20) OUTPUT
AS
SELECT @f=Фирма
FROM Клиент
WHERE Фамилия=@n
Пример 12.7. Использование вложенных процедур. Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник.
Затем создадим процедуру, подсчитывающую общее количество товара, который закуплен интересующей нас фирмой.