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