mysql - 我的 fetch into 语句中的变量数的 Cursorfetch 错误
问题描述
不确定我的代码有什么问题。在过去的 3 个小时里一直在查看这个,一切似乎都是正确的,但是在尝试执行该过程时我收到了这个 cursorfetch 错误。
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
解决方案
由于我不太了解您的数据,因此我猜测该问题可能是您的案例陈述中未处理的案例。看起来您的部门是数字并跳过 2、3 和 6。如果您与这些部门中的任何一个有任何关系,那么您的 case 语句看起来将无法处理它,从而导致您的 insert 语句出现问题。
此外,为了简单起见,如果您将 case 语句更新为(纯粹是一个建议),您可以使您的代码更易于阅读:
when Dept_Number = 1 then (Sum_Salary * 1.1) / No_Emp
when Dept_Number = 4 then (Sum_Salary * 1.2) / No_Emp
推荐阅读
- javascript - angular rxjs 在没有订阅的情况下发送了所有可观察的东西
- javascript - 未捕获的类型错误:c.querySelectorAll 不是函数
- java - 我如何在 Spring admin 中使用 JobLauncherSynchronizer
- html - 高度在宽度之前是否重要?(HTML)
- javascript - htaccess 修改漂亮的 url 会导致 Chrome Inspector 控制台中引导源映射错误的无休止的 javascript 循环
- c# - 无法使用 Oracle 存储过程将数据加载到网格上
- python - 在python中对命令使用字典值时出错
- python - 按钮不显示在框架中
- ruby - 将原始代码从 github 管道传输到 ruby 不起作用?
- php - WPML:不要在 URL 中使用语言参数并在全局范围内使用/设置语言(而不是与帖子相关的)