Не уверен, что не так с моим кодом здесь. Просматривал это последние 3 часа, и все кажется правильным, но я получаю эту ошибку выделения курсора при попытке выполнить процедуру. Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.
В текстовом редакторе он также подчеркивает все мои Sum_Salary
переменные красным в выражениях case.
Опять же, все это мне кажется правильным, и я не могу выяснить, в чем проблема в моем коде.
create procedure SP_Report_NEW_Budget
as
begin
if exists (select * from VDept_Budget)
create table NEW_Dept_Budget
(
Dept_No int,
Dept_Name varchar(30),
COUNT_Emp int,
New_SUM_Salary int,
New_AVE_Salary int
)
declare @depNumber int,
@depName varchar(30),
@empCount int,
@sumSalary int,
@aveSalary int;
declare tableCursor cursor for
select Dept_Name, Dept_Number, No_Emp, Sum_Salary, Ave_Salary,
case
when Dept_Number = 1 then (Sum_Salary + (Sum_Salary * 0.1))
when Dept_Number = 4 then (Sum_Salary + (Sum_Salary * 0.2))
when Dept_Number = 5 then (Sum_Salary + (Sum_Salary * 0.3))
when Dept_Number = 7 then (Sum_Salary + (Sum_Salary * 0.4))
end as New_SumSalary,
case
when Dept_Number = 1 then (Sum_Salary + (Sum_Salary * 0.1)) / No_Emp
when Dept_Number = 4 then (Sum_Salary + (Sum_Salary * 0.2)) / No_Emp
when Dept_Number = 5 then (Sum_Salary + (Sum_Salary * 0.3)) / No_Emp
when Dept_Number = 7 then (Sum_Salary + (Sum_Salary * 0.4)) / No_Emp
end as New_AveSalary
from VDept_Budget
open tableCursor
begin
fetch next from tableCursor into @depNumber, @depName, @empCount, @sumSalary, @aveSalary
begin
insert into NEW_Dept_Budget values(@depNumber, @depName, @empCount, @sumSalary, @aveSalary)
fetch next from tableCursor into @depNumber, @depName, @empCount, @sumSalary, @aveSalary
end
end
close tableCursor
select*from NEW_Dept_Budget
end