Exec()中的问题,请高手指教!
Declare @MaxLotNo tinyint, @ProductionTable sysname
……
exec ( 'Select @MaxLotNo = Max(Cast(SubString([LotNo], 4, 2) As tinyint)) From ' + @ProductionTable + ' Where Left([LotNo], 3) = @getLotNo And Right([LotNo], 1) = Right(Str(Year(GetDate())), 1) ')
注:在Exec执行之前@ProductionTable已经赋值(一个表名)。
执行的Exec()语句时提示:
必须声明标量变量 "@MaxLotNo "。
我反复调试都不行,拿来让熟手看看。谢谢了!
------解决方案--------------------Declare @MaxLotNo tinyint, @ProductionTable sysname
declare @sql nvarchar(1000),@getLotNo varchar(10) /*声明变量*/
set @sql = N 'Select @MaxLotNo = Max(Cast(SubString([LotNo], 4, 2) As tinyint)) From ' + @ProductionTable + N ' Where Left([LotNo], 3) = @getLotNo And Right([LotNo], 1) = Right(Str(Year(GetDate())), 1) '
----执行
EXEC sp_executesql @sql,N '@MaxLotNo tinyint OUTPUT,@getLotNo varchar(10) ',@MaxLotNo,@getLotNo
----获得变量值
SELECT @MaxLotNo