本帖最后由 wrylddr 于 2009-10-31 18:40:54 编辑

解决方案 »

  1.   

    select @sum=@sum+isnull(@med_Number,0);ALTER proc [dbo].[addsum] 
    @name varchar 
    as update med 
    set med_Sum=sum(main.med_Number )
    from main INNER JOIN 
     med ON main.med_Id = med.med_Id 
    where med_Name=@name 
    group by med_Name
      

  2.   

    ALTER proc [dbo].[addsum]
    @name varchar
    as
    declare @sum int,
    @med_Number int;
    select @sum=0;
    declare myCursor cursorforSELECT     main.med_Number
    FROM         main INNER JOIN
                          med ON main.med_Id = med.med_Id
    WHERE     (med.med_Name = @name)open myCursorfetch next from myCursor into @med_Number
    while @@fetch_status=0
    begin
    select @sum=@sum+@med_Number;
    fetch next from myCursor into @med_Number
    end
    update med set med_Sum=@sum where med_Name=@name
    close myCursor
    deallocate myCursor应该是你的@NAME长度不够,呵呵
      

  3.   

    谢谢3楼。。确实,改成@name varchar(255)立马管用了。。
    我就偷了这么一回懒。。哎。。
      

  4.   

    while 循环加语句调试,看看循环中@sum,@med_number的变化
    while @@fetch_status=0 
    begin 
    select @sum=@sum+@med_Number; 
    select @sum,@med_Number //加此语句调试
    fetch next from myCursor into @med_Number 
    end 
    如循环无问题,再查用
    select * form  med where med_Name=@name 
    查看是否有记录。