我的fetch-in语句中的变量数量的游标提取错误



不确定我的代码有什么问题。在过去的3个小时里,我一直在研究这个问题,一切似乎都是正确的,但我在尝试执行该过程时遇到了这个游标获取错误。Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.

在文本编辑器中,它还在case语句中用红色将我的所有Sum_Salary变量下划线。

同样,所有这些对我来说似乎都是正确的,我无法找出代码中的问题所在。

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

由于我不太了解您的数据,我猜测该问题可能是您的案例语句中未处理的案例。看起来你的部门是数字的,跳过2、3和6。如果你与这些部门中的任何一个有任何关系,你的案例陈述看起来都无法处理,从而导致插入陈述中出现问题。

此外,为了简化起见,如果您将case语句更新为(纯粹是一个建议(:,您可能会使代码更容易阅读

when Dept_Number = 1 then (Sum_Salary * 1.1) / No_Emp when Dept_Number = 4 then (Sum_Salary * 1.2) / No_Emp

最新更新