create proc sp_выдать_книгу
@код_книги int,
@код_читателя int,
@сообщение nvarchar(100) output
as
begin
-- Проверяем, есть ли книга в наличии
if (select количество_экземпляров from книги where код_книги = @код_книги) > 0
begin
-- Ищем следующий номер для выдачи
declare @new_id int = (select isnull(max(код_выдачи), 0) + 1 from выдачи);
-- Выдаем книгу (дата возврата пустая)
insert into выдачи (код_выдачи, код_книги, код_читателя, дата_выдачи, дата_возврата)
values (@new_id, @код_книги, @код_читателя, getdate(), null);
-- Уменьшаем количество на складе
update книги set количество_экземпляров = количество_экземпляров - 1
where код_книги = @код_книги;
set @сообщение = 'Успешно выдана';
end
else
begin
set @сообщение = 'Ошибка: нет экземпляров';
end
end
declare @msg nvarchar(100);
execute sp_выдать_книгу 2, 5, @msg output; -- Выдаем книгу №2 читателю №5
select @msg;