CREATE PROCEDURE test (@ontime char(10) )
AS
begin
  declare @afdname char(11)
  declare @itemid char(11)
  declare @djgtype char(1) 
  select itemid,djgtype from tem_zzjgarc 
  open tem_zzjgarc_cur 
  fetch next from tem_zzjgarc_cur into @itemid,@djgtype
  while (@@fetch_status=0)
  begin
     set @afdname=substring(@ontime,1,2)
     if @afdname='0' 
     begin
       set @afdname='h24'
     end else
     begin
       set @afdname='h'+@afdname
     end 
     update todayshd set @afdname=@afdname+100 where itemid=@itemid and djgtype=@djgtype
     if @@Rowcount<1  /*如果不存在则增加*/
     begin       
       insert into todayshd (itemid,djgtype,@afdname) values (@itemid,@djgtype,1000)
       /*因为要插入的一个字段名是动态,不能用变量做字段名用吗?@afdname*/ 
     end
     fetch next from tem_zzjgarc_cur into @itemid,@djgtype
   end 
   close tem_zzjgarc_cur
   deallocate tem_zzjgarc_cur             
end

解决方案 »

  1.   

    变量中存储的是一个字符串,比如说是'field1',当然不行了
      

  2.   

    CREATE PROCEDURE test (@ontime char(10) )
    AS
    begin
      declare @sqlstr varchar(4000) --加这里!!!
      declare @afdname char(11)
      declare @itemid char(11)
      declare @djgtype char(1) 
      select itemid,djgtype from tem_zzjgarc 
      open tem_zzjgarc_cur 
      fetch next from tem_zzjgarc_cur into @itemid,@djgtype
      while (@@fetch_status=0)
      begin
         set @afdname=substring(@ontime,1,2)
         if @afdname='0' 
         begin
           set @afdname='h24'
         end else
         begin
           set @afdname='h'+@afdname
         end 
         update todayshd set @afdname=@afdname+100 where itemid=@itemid and djgtype=@djgtype
         if @@Rowcount<1  /*如果不存在则增加*/
         begin       
           Set @sqlstr = 'insert into todayshd (itemid,djgtype,' + @afdname +') values ('@itemid,@djgtype,1000)'--改这里,可能还要改改,把变量值替换进去,希望你自己会:)
          exec(@sqlstr)--改这里!!!!!!!
         end
         fetch next from tem_zzjgarc_cur into @itemid,@djgtype
       end 
       close tem_zzjgarc_cur
       deallocate tem_zzjgarc_cur             
    end
    ===============================================================
         ◆◆◆ CSDN查询助手,查询方便快捷 ◆◆◆ 下载地址:  
     http://CoolSlob.ifood1.com/Download/CSDNFinder.exe  
     http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]  
      

  3.   

    对,只有是用CoolSlob() 所提到的方法。首先把你要执行的SqL语句合成为一个字符窜付给一个varchar,然后exec这个varchar就行了。这个问题很流行阿:)。