表Table有A、B、C、D四个字段,都是int
用存储过程向Table插记录,传4个参数
@A nvarchar(max),
@B int,
@C int,
@D int
分别对应A、B、C、D四个字段,其中@A是用‘$’分隔的字符串
已经用函数把@A参数转换成临时表
现在需要遍历这个临时表,判断是否存在相同记录,不存在则插入到Table
请教这个遍历的写法,谢谢~~

解决方案 »

  1.   

    @B int, 
    @C int, 
    @D int 
    分别对应B、C、D三个字段
      

  2.   

    insert tb
    select a.a,@b,@c,@d 
    from # as a left join tb as b on a.a=b.a
    where b.a is null
      

  3.   

    ………………
    例如
    @A=‘1$2$3$4'
    @B=3
    @C=4
    @D=5
    @A转换成了临时表
    1
    2
    3
    4
    现在要怎么遍历这个临时表向表Table里插数据?
      

  4.   

    insert tb
    select a.a,@b,@c,@d 
    from # as a left join tb as b on a.a=b.a and a.b=b.b and a.c=b.c and a.d=b.d
    where b.a is null
      

  5.   

    用动态SQL吧
    delcare @sql varchar(8000)
    set @sql = 'union all select '
    select @sql = @sql + A + ' as A,B,C,D' from 临时表
    set @sql = 'insert into [Table] ' + stuff(@sql,0,10,'')
    exec (@sql)这样就可以了。
      

  6.   

    对不起楼主,有个函数用错了。代码中红色部分替换楼主需要的实际表名就可以。
    declare @sql varchar(8000) 
    set @sql = ''
    select @sql = @sql + ' union all select ' + cast(A as varchar(100)) + ',2,3,4' from @t2
    select  @sql = 'insert into 实际表 ' + stuff(@sql,1,11,'') 
    exec (@sql)