首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

快疯了,一个很。的异常

2012-03-02 
快疯了,一个很。。。的错误!alterproczonghetongji--全部 , 全部 , 2007-1-1 , 2007-12-31 , 全部 ,1,300@dan

快疯了,一个很。。。的错误!
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
这句话放到游标循环体的最下面

热点排行