Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инструментальные средства разработки корпоратив...doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
604 Кб
Скачать
☆

Тема 8. Хранимые процедуры и функции пользователя»

Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту.

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

CREATE PROC my_proc1

@р FLOAT,

@iz VARCHAR(20)

AS

UPDATE Книга SET цена=Цена*(1+@р)

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

8.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='Иванов1

SELECT @st

 DECLARE @st FLOAT

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

EXEC my_proc2 @f = 'Иванов', @iz = 'Мир', @s = @st

OUTPUT SELECT @st

 DECLARE @st INT

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

SELECT @st

 DECLARE @St FLOAT

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

SELECT @st

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

CREATE PROC my_proc3

@f VARCHAR(20)='Петров',

@iz VARCHAR(20)='ACT',

@s FLOAT = 0.1 OUTPUT

AS

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

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

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

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

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

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

 DECLARE @st FLOAT EXEC my_proc3 @iz='Мир',@f='Иванов', @s=@st OUTPUT SELECT @St

 EXEC my_proc3

 DECLARE @st FLOAT EXEC my_proc3 @st OUTPUT SELECT @st

 DECLARE @St FLOAT EXEC rny_proc3 @s=@st OUTPUT SELECT @st

Тема 9. Триггеры: создание и применение. Триггеры в рекурсивных структурах

Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту.

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

CREATE TRIGGER trig_ins

ON Книга FOR INSERT

AS

Выберите операторы для продолжения текста триггера:

 DECLARE @av INT,

@k INT

SELECT @ау=КодАвтора, @k = количество FROM inserted

UPDATE Автор SET тираж = тираж + @k

WHERE KoдАвтоpa = @av

 UPDATE Автор

SET тираж = тираж + inserted.количество

WHERE KoдАвтopa = inserted.KoдАвтopa

 UPDATE Автор

SET тираж = тираж + (SELECT количество

FROM inserted) WHERE Автор.КодАвтора = inserted.КодАвтора

 UPDATE Автор

SET тираж = тираж + (SELECT количество

FROM inserted WHERE Автор.KoдАвтopa = inserted.КодАвтора)