мне нужно создать систему, которая рассчитывает зарплату персонала для данного типа работы (см. Операторы) с использованием процедур и курсоров, но при исключении курсора он продолжает загружаться, а при отмене обновляет таблицу и устанавливает все значения к первому оператору if в хранимой процедуре
create procedure salaryproc @booking_type varchar(50), @staff_type varchar(50), @salary int = 0
as
begin
if(@booking_type='personal' and @staff_type='booking')
begin
set @salary = 1500+2300
end
if(@booking_type='personal' and @staff_type='catering')
begin
set @salary = 1500+1900
end
if(@booking_type='official' and @staff_type='booking')
begin
set @salary = 1800+2300
end
if(@booking_type='official' and @staff_type='catering')
begin
set @salary = 1800+1900
end
update staff
set salary=@salary
end
declare @booking_type varchar(50)
declare @staff_type varchar(50)
declare @salary int
declare salary_cursor cursor
for select b.type, s.type, s.salary
from booking as b, staff as s
open salary_cursor
fetch next from salary_cursor
into @booking_type, @staff_type, @salary
while(@@fetch_status=0)
begin
exec salaryproc @booking_type , @staff_type, @salary
end
close salary_cursor