不能那么写,应该先组织成SQL语句形式
再用EXEC执行

解决方案 »

  1.   

    delcare @columnname varchar(20),@recordvalue varchar(10),@sql varchar(100)
    set @columnname ='orderid'
    set @sql='select ' +@columnname+' from deleted where '+@columnname+'=1'
    @recordvalue=exec(@sql)
    insert into temptable values(@recordvalue)
      

  2.   

    delcare @columnname varchar(20)
    set @columnname ='orderid'
    exec('
    declare @recordvalue varchar(10)
    select @recordvalue=(select '+@columnname+' from deleted where '+@columnname+' =1
    insert into temptable values(@recordvalue)')
      

  3.   

    可能上面这个语句有问题的,逻辑有问题这么写可能好些
    delcare @columnname varchar(20),@sql varchar(100)
    set @columnname ='orderid'
    set @sql='insert into temptable select ' +@columnname+' from deleted where '+@columnname+'=1'
    exec(@sql)这样当你选择的语句有多条的情况下,语句仍然可以用,当然你现在的条件只能返回一条,氢你现在的情况是正常的。我只是说用这种方法可能会更些的。
      

  4.   

    try:declare @columnname varchar(20),@recordvalue varchar(10),@sql nvarchar(1000)
    set @columnname ='orderid'
    set @sql=N'select @result='+@columnname+' from deleted where '+@columnname+' =1'
    exec sp_executesql @sql,N'@result varchar(10) output',@recordvalue output
    insert into temptable values(@recordvalue)
      

  5.   

    我早就试过了,不行在更改数据时,会报错不认deleted表