Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


EXEC my_proc6 9, @st output




SELECT @st

Этот блок команд позволяет определить стоимость товаров, продан­ных в сентябре (входной параметр месяц указан равным 9).

Пример 7. Использование вложенных процедур.

Требуется создать проце­дуру для определения общего количества товаров, приобретенных фир­мой, в которой работает заданный сотрудник.

 

Сначала разработаем процедуру для определения фирмы, где рабо­тает сотрудник.

CREATE PROC my_proc7

@n VARCHAR (50),

@f VARCHAR (50) OUTPUT

AS

SELECT @f = Название_фирмы

FROM Клиенты WHERE Фамилия=@n

Затем создадим процедуру, подсчитывающую общее количество то­вара, который закуплен интересующей нас фирмой.

Пример 8.

CREATE PROC my_proc8

@fam VARCHAR (20),

@kol INT OUTPUT

 

AS

DECLARE @firm VARCHAR (20)

 

EXEC my_proc7 @fam, @firm OUTPUT

SELECT @kol = Sum (Продажи.Количество_ед_товара)

FROM Клиенты INNER JOIN Продажи

ON Клиенты.ID_Клиента=Продажи.Клиент

GROUP BY Клиенты.Название_фирмы

HAVING Клиенты.Название_фирмы = @firm

Вызов процедуры осуществляется с помощью команд:

 

DECLARE@k INT

 

EXEC my_proc8 'Иванов', @k OUTPUT

SELECT @k

 

Пример 9. Создать хранимую процедуру для вывода списка товаров, проданных заданным продавцом за текущий день и подсчета общего количества и стоимости этих товаров.

Вариант решения 1.

CREATE myproc9

@name varchar (20)

AS

SELECT Товары.Название_товара, SUM (Продажи.Кол-во_ед_товара) Количество, SUM (Стоимость_продажи) Стоимость

FROM Товары INNER JOIN Продажи

ON Товары.id-товара=Продажи.Продавец

GROUP BY Товары.Название_товара,Персонал.Фамилия,Продажи.Дата

HAVING Персонал.Фамилия=@name and

Продажи.Дата=(SELECT CONVERT (varchar(10), GETDATE (),120))

 

Вариант решения 2.

CREATE myproc9

@name varchar(20)

AS

SELECT Товары.Название_товара, SUM (Продажи.Кол-во_ед_товара) Количество, SUM (Стоимость_продажи) Стоимость

FROM Товары INNER JOIN Продажи

ON Товары.id-товара=Продажи.Продавец

GROUP BY Товары.Название_товара,Персонал.Фамилия,Продажи.Дата

HAVING Персонал.Фамилия=@name and

Продажи.Дата=(SELECT CAST (YEAR (GETDATE ()) AS CHAR (4))+’-‘+ CAST (MOUNTH (GETDATE ()) AS CHAR (2))+’-‘+ CAST (DAY (GETDATE ()) AS CHAR (2)))

 

Задания для самостоятельной работы (Лаб 2)

 

I) Разработайте следующие типы хранимых процедур:

1. Процедура без параметров;

2. Процедура с одним параметром;

3. Процедура с несколькими входными параметрами и значением по умолчанию

(например, с помощью хранимой процедуры для заданного поставщика

a. из таблицы Поставки требуется удалить все сведения, относящиеся к заданному периоду поставок);

b. в таблицу Телефоны_поставщиков требуется добавить заданный номер телефона) и другие варианты процедур.

4. Процедура с входными и выходными параметрами;

5. Разработайте собственный пример использования вложенных процедур.

II) Выполните следующие тесты:

Вариант 1

1. Пусть для заданного издательства создана процедура для увеличения цены книг на заданный %:

CREATE PROC my_procl

FLOAT,

@iz VARCHAR (20)

AS

UPDATE Книга SET Цена=Цена*(l+@p)

WHERE Издательство=@iz

 

Определите правильную команду для выполнения процедуры.

· EXEC my_procl 0.2, 'ACT

· EXEC my_procl @p=0.2, 'ACT'

· EXEC my_procl @издат='АСТ', 0.2

· EXEC my_procl @iz='ACT', @p=0.25

 

2. Пусть для определения общей стоимости книг, изданных заданным автором в заданном издательстве, разработана процедура:

CREATE PROC my_proc2

@f VARCHAR (20),

@iz VARCHAR (20),

@S FLOAT OUTPUT

AS

SELECT @s = SUM (Книга.Цена * книга.Количество)

FROM Книга INNER JOIN Автор

ON Книга.КодАвтора=Автор.КодАвтора

GROUP BY Автор.Фамилия, Книга.Издательство

HAVING Автор.Фамилия=@f AND Книга.издатепьство=@iz

 

Укажите правильный вызовпроцедуры.

· DECLARE @st FLOAT

EXEC my_proc2 @iz='Мир',@s=@st, @f='ИBaHOB'

SELECT @st

 

· DECLARE @st FLOAT

DECLARE Of VARCHAR (20), @iz VARCHAR (20)

EXEC rny_proc2 @£='Иванов',@iz=’Mир',@s=@st OUTPUT

SELECT @st

 

· DECLARE @st INT

EXEC my_proc2 ('Иванов’, 'Мир', @st OUTPUT)

SELECT @St

 

· DECLARE list FLOAT





Поделиться с друзьями:


Дата добавления: 2015-10-19; Мы поможем в написании ваших работ!; просмотров: 513 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

2345 - | 2182 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.