如下 代码,执行出错,提示 @GradeCode 未声明
declare @StepDate datetime
declare @GradeCode char(1)
declare @Sql     nvarchar(500)set @StepDate='2011-09-01'; declare updateGradeSumCur  cursor  for 
select GradeCode from tableA 
  open updateGradeSumCur 
    fetch next  from  updateGradeSumCur into @GradeCode
    while @@fetch_status=0 
    begin
set @sql='update  TableB set G'+@GradeCode+'=(select isnull(sum(weight),0) from TableC where GradeCode=@GradeCode and Rtrim(Tdate)=Convert(char(10),@StepDate,120))'
exec(@sql)
  fetch next  from  updateGradeSumCur into @GradeCode   
end
  close updateGradeSumCur
  deallocate  updateGradeSumCur我想执行的是这样的语句 
 如果@GradeCode=0,拼成的SQL如下
 update  TableB  set G0=(select isnull(sum(weight),0) from TableC where GradeCode='0' and Rtrim(Tdate)=Convert(char(10),@StepDate,120))
如果@GradeCode=1  拼成的SQL如下
 update  TableB  set G1=(select isnull(sum(weight),0) from TableC where GradeCode='1' and Rtrim(Tdate)=Convert(char(10),@StepDate,120))

解决方案 »

  1.   

    if @GradeCode=0 then
    set @sql='update  TableB set G0'+......
    else if @GradeCode=1
    set @sql='update  TableB set G1'+......
      

  2.   


    set @sql='update  TableB set G'+@GradeCode+'=(select isnull(sum(weight),0) from TableC where GradeCode='''+@GradeCode+''' and Rtrim(Tdate)='''+Convert(char(10),@StepDate,120))+''''
    exec(@sql)
      

  3.   

    declare @StepDate datetime
    declare @GradeCode char(1)
    declare @Sql     nvarchar(500)set @StepDate='2011-09-01'; declare updateGradeSumCur  cursor  for 
                select GradeCode from tableA 
              open updateGradeSumCur 
                fetch next  from  updateGradeSumCur into @GradeCode
                while @@fetch_status=0 
                begin
    set @sql='update  TableB set G'+@GradeCode+'=(select isnull(sum(weight),0) from TableC where GradeCode='''+@GradeCode+''' and Rtrim(Tdate)='''+Convert(char(10),@StepDate,120))+''''
    exec(@sql)                  fetch next  from  updateGradeSumCur into @GradeCode      
                end
              close updateGradeSumCur
              deallocate  updateGradeSumCur
      

  4.   

    set @sql='update  TableB set G'+@GradeCode+'=(select isnull(sum(weight),0) from TableC where GradeCode='''+@GradeCode+''' and Rtrim(Tdate)='''+Convert(char(10),@StepDate,120))+''''
    exec(@sql)