日期:2014-05-18  浏览次数:20501 次

看一下:变量当表名查询但又要有返回值的问题!!!
declare   @alu   int
declare   @tablename   varchar(20)
set   @tablename   =   'byb '
set   @alu   =   (select   state   from   @tablename)
select   @alu

本问题和一般变量取表名的问题不同的是,它多了一步取返回值的问题。
set   @alu   =   (select   state   from   @tablename)这里需要把查询的结果值赋给@alu变量。如果采用exec( 'select   state   from   '   +     @tablename)这种方式的话并不能够把返回的查询值赋给@alu变量。向高手们赐教!

------解决方案--------------------
declare @alu int
declare @tablename varchar(20)
set @tablename = 'byb '

declare @sql nvarchar(200)
set @sql=N 'select @alu=state from '+@tablename
exec sp_executesql @sql,N '@alu int output ',@alu output
select @alu