一步一步的来
step1
SELECT
* FROM CD_DayTableName WHERE FDate BETWEEN '@NewStartDate' AND '@EndDate'
这个时是正确的,需要解决的是*
变成
SELECT
@TSQL=@TSQL+'INSERT CD_FuleGasTemp(FStaionName,FGunNo,FUserCardNo,FCardType,FPrice,FPurseMoney,FPurseGas,FPurseAmount,FBenefits,'+
'FTraDate,FOperatorNo,FQueryUser) SELECT '''+@StaionName+''',FGunNo,FUserCardNo,FCardType,FPrice,FPurseMoney,FPurseGas,'+
'FPurseAmount,FBenefits,FTime,FOperatorCardNo,'''+@QueryUser+''' FROM ['+FTableName+'] WHERE FBizType='''+@BizType+''''+
' AND FStationNo='''+@stationid+''' AND (FShiftNo='''+@shiftid+''' or '''+@shiftid+'''='''+''+''') AND '+
'(FGunNo='''+@fgunid+''' or '''+@fgunid+'''='''+''+''');' FROM CD_DayTableName WHERE FDate BETWEEN '@NewStartDate' AND '@EndDate'
这个时候出现了问题
消息 137,级别 15,状态 2,第 2 行
Must declare the scalar variable "@TSQL".
所以我们定义一个变量之后我发现这些变量都没有定义,所以我帮你都定义了
DECLARE @TSQL VARCHAR(3000)
DECLARE @StaionName VARCHAR(3000)
DECLARE @QueryUser VARCHAR(3000)
DECLARE @BizType VARCHAR(3000)
DECLARE @stationid VARCHAR(3000)
DECLARE @shiftid VARCHAR(3000)
DECLARE @fgunid VARCHAR(3000)
DECLARE @NewStartDate VARCHAR(3000)
DECLARE @EndDate VARCHAR(3000)
SELECT
@TSQL=@TSQL+'INSERT CD_FuleGasTemp(FStaionName,FGunNo,FUserCardNo,FCardType,FPrice,FPurseMoney,FPurseGas,FPurseAmount,FBenefits,'+
'FTraDate,FOperatorNo,FQueryUser) SELECT '''+@StaionName+''',FGunNo,FUserCardNo,FCardType,FPrice,FPurseMoney,FPurseGas,'+
'FPurseAmount,FBenefits,FTime,FOperatorCardNo,'''+@QueryUser+''' FROM ['+FTableName+'] WHERE FBizType='''+@BizType+''''+
' AND FStationNo='''+@stationid+''' AND (FShiftNo='''+@shiftid+''' or '''+@shiftid+'''='''+''+''') AND '+
'(FGunNo='''+@fgunid+''' or '''+@fgunid+'''='''+''+''');' FROM CD_DayTableName WHERE FDate BETWEEN @NewStartDate AND @EndDate
这个时候执行这个语句就没有语法错误了.
但是你这个是一个查询语句,LZ事项直接去执行这个语句获取结果对不对.
这个时候我建议写成存储过程,传递这些参数进行 就然后获得结果就好了.