读书人

快疯了一个很。的异常

发布时间: 2012-03-02 14:40:29 作者: rapoo

快疯了,一个很。。。的错误!
alter proc zonghetongji-- '全部 ', '全部 ', '2007-1-1 ', '2007-12-31 ', '全部 ',1,300
@danwei varchar(100)= '全部 ',
@jigou varchar(100)= '全部 ',
--@start varchar(20),
--@stop varchar(20),
@do varchar(10)= '奖励 '
--@down int,
--@top int
as
begin
declare @tongji table
(
id int identity primary key,
name varchar(50),
avgg int,
zongCount int,
jiang int,
cheng int
)
declare @avg int
declare @zongCount int
declare @jiang int
declare @cheng int
declare @name varchar(50)
if (@danwei= '全部 ' and @jigou= '全部 ')
begin
if @do= '全部 '
begin
insert into @tongji(name) select distinct 名称 from 部门信息
declare @cursor cursor
set @cursor=cursor scroll for select name from @tongji

open @cursor

fetch next from @cursor into @name
while(@@fetch_status=0)
begin
fetch next from @cursor into @name
select @avg=avg(a.分数) from 人员信息 a,部门信息 b where b.名称=@name


select @zongCount=count(*) from 人员信息 a,部门信息 b where a.部门ID=b.id and b.名称=@name
select @jiang=count(*) from 人员信息 a,部门信息 b,奖惩 c,审批 d where a.部门ID=b.id and c.证件号=a.证件号 and c.id=d.id
and b.名称=@name and c.奖惩= '奖励 '
select @cheng=count(*) from 人员信息 a,部门信息 b,奖惩 c,审批 d where a.部门ID=b.id and c.证件号=a.证件号 and c.id=d.id
and b.名称=@name and c.奖惩= '惩罚 '
-- insert into @tongji values(@name,@avg,@zongCount,@jiang,@cheng)

       !!!!!!! update @tongji set avgg=@avg,zongCount=@zongCount,jiang=@jiang,cheng=@cheng where name=@name
!!!!!!!!!
end
close @cursor

end

end
select * from @tongji
end
中间用感叹号括起来的那句老提示语法出错,换成 insert into @tongji values(@name,@avg,@zongCount,@jiang,@cheng)却不出错,不知是为什么啊,检查没有发现语法错误啊!!
请高手指点!

[解决办法]
换一种思路:
把这句语句拼成一个字符串,赋给某个变量;在执行该变量!

比如说
declare @strsql nvarchar(100)

select @strsql = 你的那条语句(注意单引号在此处需要用 ' '两个单引号表示)
exec sp_executesql @strSQL

试试看
[解决办法]
输出这句话看看呢
update @tongji set avgg=@avg,zongCount=@zongCount,jiang=@jiang,cheng=@cheng where name=@name

[解决办法]
fetch next from @cursor into @name
这句话放到游标循环体的最下面

读书人网 >SQL Server

热点推荐