declare @ddi_sid varchar(50)
declare @ddbs_sid varchar(50)
declare @Filetitle varchar(50)
declare @innercode varchar(50)
declare @num varchar(50)
declare @i int
set @i=1
select @num=count(*) FROM dbo.Doc_Consfile  
select @Filetitle=Filetitle,@innercode=innercode from Doc_Consfile
while @i<=@num
begin
select @ddi_sid=max(ddi_sid)+1 from DOC_ddi
insert into DOC_ddi(ddi_sid,ddbs_sid,ddi_name,ddi_no,ddi_type) 
values (@ddi_sid,7207,@Filetitle,@innercode,'施工图')
set @i=@i+1
end
目标:把表Doc_Consfile的数据复制到表DOC_ddi,表DOC_ddir的ddi_sid自动递增且不为空。以上代码执行后的数据都是同一样。起不到要的效果。请各位帮忙下,谢谢

解决方案 »

  1.   

    ---必须保证表结构相同的
    select * into newtable from tb
      

  2.   

    直接在表DOC_ddi中把 ddi_sid设置为自增列
    然后用insert into DOC_ddir(除ddi_sid以外的列) select (除ddi_sid以外的列) from tb
      

  3.   

    insert into DOC_ddi(ddi_sid,ddbs_sid,ddi_name,ddi_no,ddi_type) 
    select row_number() over(order by getdate()),Filetitle,7207,innercode 
                      from Doc_Consfile
      

  4.   

    insert into DOC_ddi(ddi_sid,ddbs_sid,ddi_name,ddi_no,ddi_type) 
          select row_number() over(order by getdate()),Filetitle,7207,innercode,'施工图'
                      from Doc_Consfile
      

  5.   

    declare @ddi_sid varchar(50)
    declare @ddbs_sid varchar(50)
    declare @Filetitle varchar(50)
    declare @innercode varchar(50)
    declare @num varchar(50)
    declare @i int
    set @i=1
    select @num=count(*) FROM dbo.Doc_Consfile  
    select @Filetitle=Filetitle,@innercode=innercode from Doc_Consfile
    while @i<=@num
    begin
    select @ddi_sid=max(ddi_sid)+1 from DOC_ddi---最大值+1
    insert into DOC_ddi(ddi_sid,ddbs_sid,ddi_name,ddi_no,ddi_type) 
    values (@ddi_sid,7207,@Filetitle,@innercode,'施工图')
    set @i=@i+1
    end
    目标:把表Doc_Consfile的数据复制到表DOC_ddi,以上代码执行后的数据都是同一条。起不到要的效果。请各位帮忙下,谢谢
      

  6.   

    首先问 把表Doc_Consfile的数据复制到表DOC_ddi两张表结构一样吗? 然后DOC_ddi里面已有的数据还要吗?
    然后ddi_sid的identity开了吗
      

  7.   

    你的存储过程写错了,select @Filetitle=Filetitle,@innercode=innercode from Doc_Consfile
    放在WHILE外面,结果永远都是插入这条语句获取的数据。
    其实你没必要这么麻烦,如果两个表的结构一样,直接用2楼的方法,简单轻松。