求助,有一道题不会做了

chengxuan104 chengxuan104 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚学sql数据库,这道题不知道哪出了错,找了半天,求各位大贤帮帮忙!!! 创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金=年销售总额×提成率。
提成率规则如下:年销售总额5000元以下部分,提成率为10%,对于5000元及超过5000元部分,则提成率为15%。
create procedure nzj4 @nianfen char(10)
as
begin

declare @salerno char(8),@ordersum char(10),@jiangjin char(10)


declare nzj2 cursor for
select a.salerNo,sum(a.orderSum) 总销售额,YEAR(a.orderDate) 年份 --每个年度每个业务员的销售总额
from OrderMaster a,OrderMaster b
where a.salerNo=b.salerNo and convert(char(4), a.orderdate,120)=@nianfen --根据输入年份来查询
group by a.salerNo,YEAR(a.orderDate)
order by a.salerNo


open nzj2
create table #bonus( ---内存临时表,会话结束系统自动删除
salerno char(8),ordersum char(10),nianfen char(10),jiangjin char(10)
primary key(salerno) )



fetch nzj2 into @salerno ,@ordersum ,@nianfen
while (@@FETCH_STATUS=0)
begin
if @ordersum>5000
select @jiangjin=(@ordersum-5000)*0.15+5000*0.1
else select @jiangjin=@ordersum*0.1
select @salerno ,@ordersum ,@nianfen
insert into #bonus values( @salerno,@ordersum, @nianfen, @jiangjin)
fetch nzj1 into @salerno ,@ordersum ,@nianfen
end
close nzj2
deallocate nzj2
end


exec nzj4 2008

提示出错:消息 16915,级别 16,状态 1,过程 nzj4,第 9 行
名为 'nzj2' 的游标已存在。
消息 16905,级别 16,状态 1,过程 nzj4,第 16 行
游标已打开。
消息 245,级别 16,状态 1,过程 nzj4,第 26 行
在将 varchar 值 '19561.60 ' 转换成数据类型 int 时失败。
...全文
评论 6
收藏 已收藏
分享
返回顶部
chengxuan104
MS-SQL Server 34,876 成员 254,635 内容