declare @id int 
declare @kqday DateTime 
declare @endtime DateTime while @kqday <=@endtime 
  begin 
      select @kqday= DateAdd(m, 1, @kqday) 
      insert  tb (日期,指纹号) values(@kqday ,@id )
  end 

解决方案 »

  1.   

    全是不清不楚的1,@tb是表变量还是字串变量指代了表名
    2,insert 表 f1='xx',f2='yyy'  这语法太先进了,sql2008都不支持
    3,文不对题,还没看到所谓的不确定的表是什么..
      

  2.   

    declare @id int 
    declare @kqday DateTime 
    declare @endtime DateTime 
    while @kqday <=@endtime 
      begin 
          select @kqday= DateAdd(m, 1, @kqday) 
           insert @tb(日期, 指纹号)select @kqday  ,@id 
      end 
      

  3.   


    declare @id int 
    declare @kqday DateTime 
    declare @endtime DateTime 
    declare @tb char(10)
    while @kqday <=@endtime 
      begin 
          select @kqday= DateAdd(m, 1, @kqday) 
           insert @tb(日期, 指纹号)select @kqday  ,@id 
      end 这个的语法检查说@tb没有声明……
      

  4.   

    呵呵!写得粗糙漏了!表是一个变量的方式输入的!通过变量赋值月份 
    每个ID都添加一个月从开始到最后一天的记录,每天一条
    ID从另外一张不确定的月份表取得!就是KQ_XXXXXX、KQ_XXXXXXS两张变量的表
      

  5.   


    declare @id int 
    declare @kqday DateTime 
    declare @endtime DateTime 
    --declare @tb char(10) 
    declare @tb table('日期' varchar(20),'指纹号' varchar(20))
    while @kqday <=@endtime 
      begin 
          select @kqday= DateAdd(m, 1, @kqday) 
          insert into @tb(日期, 指纹号) select @kqday  ,@id 
      end 
      

  6.   

    最后写成以下并通过运行!
     @id int ,
     @kqday DateTime ,
     @endtime DateTime ,
     @tb char(10) as
    declare @sql varchar(1000)
      while @kqday <=@endtime 
        begin 
            
          begin     
           set @sql = 'insert ' + @tb + '(日期,指纹号) select ''' + convert(varchar(10),@kqday,120) + ''',' +rtrim(@id)
            --select @sql
            exec(@sql)
           end
         select @kqday= DateAdd(d, 1, @kqday)
        end