declare @i int
declare @columnvalue varchar(100) select @columnvalue=convert(varchar(3),i)
exec('select w'+ @columnvalue+ ' from podtl where item = 10001')
declare @columnvalue varchar(100) select @columnvalue=convert(varchar(3),i)
exec('select w'+ @columnvalue+ ' from podtl where item = 10001')
declare @weeksalesqty floatexec(select w'+convert(varchar(3),i) + 'as wi into ls from podtl where item = 10001)set @weeksalesqty = select wi from ls
exec('select w'+ @columnvalue+ ' from podtl where item = 10001')
你那是干什么?换一个参数表示有什么意义?
人要的是名为 'w' + convert(varchar(2),i) 的字段的值。
declare @weeksalesqty float
declare @sql nvarchar(4000)
set @sql='select @qtyout=w'+convert(varchar(3),i) + ' from podtl where item = 10001'
exec sp_executesql @sql,N'@qtyout float output',@weeksalesqty output
select @weeksalesqty
------------------------------------------------------
采用sp_executesqlDECLARE @sql nvarchar(500),
@i int,
@weeksalesqty floatSET @i=3
SET @sql=N'SELECT @R=w'+convert(varchar(3),@i) + ' FROM podtl WHERE item = 10001'EXECUTE sp_executesql @sql,N'@R float OUTPUT',@weeksalesqty OUTPUT
SELECT @weeksalesqty
return (select c1=case @i when 1 then w1 when 2 then w2 when 3 then 3 end from podtl where item = 10001)
godeclare @i int, @weeksalesqty float
select @weeksalesqty=c1 from f_x(@i)