set@SQL=('select * from '+@TableName+' where BatCode='+@batcode)
改为
set @SQL=('select * from '+@TableName+' where BatCode='''+@batcode+'''')
BatCode 应该是字符串类型。
你可以用exec来执行
如declare @sql varchar(100)
set @sql = 'select * from table1'
exec(@sql)
出现错误,你可以先将@SQL的内容显示出来看看,组成的SQL语句是否正确.
你上面的例子应为组@SQL时不对,@batcode为nvarchar类型,组时应加上引号.
直接在后面的SQL语句中的where条件中 字段= 变量
exec(@变量)