declare @s varchar(1000)
  set @s=
  'declare @e int,@f int,@g int
   select @e=,@f=,@g=
   insert into TB1 select n.e,n.f,n.g from TB2 m where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b'
  exec(@s)我的问题是这样的:
能不能在@s之前对@e、@f、@g进行声明并赋值,然后在@s中引用这三个变量。请各位大虾给予指点,先谢谢!

解决方案 »

  1.   

    trydeclare @s varchar(1000) 
    declare @e int,@f int,@g int 
    set @e = 0,@f=0,@g =0
    set @s = 'insert into TB1 select n.e,n.f,n.g from TB2 m where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b';
    exec(@s);
      

  2.   

    declare @s nvarchar(1000) 
    declare @e int,@f int,@g int 
      set @s= 
      'insert into TB1 
      select n.e,n.f,n.g from TB2 m 
      where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b' 
    exec sp_executesql @s,N'@e int,@f int,@g int',@e=? ,@f=?,@g=? 
      

  3.   

    declare @i int,@s nvarchar(1000)
    set @i=5
    exec('select ID,Name from sysobjects where ID='+@i)set @s='select ID,Name from sysobjects where ID=@i'
    exec sp_executesql @s,N'@i int',@i--此处输入参数要加上N
    这个是语法
      

  4.   

    --用exec sp_executesql 
    declare @s nvarchar(1000) 
    declare @e int,@f int,@g int 
    set @s= 
    'insert into TB1 
    select n.e,n.f,n.g from TB2 m 
    where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b' 
    exec sp_executesql @s,N'@e int,@f int,@g int',@e=? ,@f=?,@g=?
      

  5.   

    declare @s nvarchar(1000)
      
      declare @ee int,@ff int,@gg int
      select @ee=1,@ff=1,@gg=1,
      @s=N'insert into TB1 select n.e,n.f,n.g from TB2 m where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b'
      exec sp_executesql @s,N'@e int,@f int,@g int',@e=@ee,@f=@ff,@g=@gg
      

  6.   

    declare @s nvarchar(1000) 
    declare @e int,@f int,@g int 
    set @e=5
    set @f=6
    set @g=7
    set @s= 
      'insert into TB1 
      select n.e,n.f,n.g from TB2 m 
      where (@e1=m.e and @f1=m.f and @g1=m.g) and m.a-m.b!=n.a-n.b' 
    exec sp_executesql @s,N'@e int,@f int,@g int',@e1=@e ,@f1=@f,@g1=@g 
      

  7.   

    declare @s nvarchar(1000),@p nvarchar(200);
    set @s=N'insert into TB1 select n.e,n.f,n.g from TB2 m where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b'
    set @p='@e int,@f int,@g int' 
    exec sp_executesql @s,@p,@e=1,@f=2,@g=3