SQL串“ print” 不不来,怪哉,急急急急。。。
declare @sqlstr varchar(2500); --调试SQL
if(@countrowbefore = 0 and @countrowaccomplish = 0)
begin
print '执行到了3'
set @sqlstr= @sqlstr + 'select * ,'''+@EsName+'''+ as EsName,'''+@EsTypeName+''' as EsTypeName,'''+@EnergyTypeName+''' as EnergyTypeName,'+Cast(@EsPct as varchar(16))+' as EsPct,'+Cast(@ActPct as varchar(16))+' as ActPct,'''+@BuildingName+''' as BuildingName from
( select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayBefore+''' and (DateFlag =''A'' or DateFlag =''T'')) as pt
pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt
union all
select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayAccomplish+''' and DateFlag =''B'') as pt
pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt
) as rall '
print @sqlstr
print '执行到了3.1'
输出结果:
问题:怎么回事??? 中间的“ print @sqlstr”没有输出,而前后的标示都输出了。
[最优解释]
证明不是没执行,而是@sqlstr为空
[其他解释]
declare @sqlstr varchar(2500); --调试SQL
set @sqlstr=''
你没有吧@sqlstr 赋值,所以 @sqlstr+null 就的不到,你前面增加上面一句,就可以了
[其他解释]
试试2楼的,它实际上不是没print,而是print出来为null
[其他解释]
我把你所有变量都编程''后,能print出语句出来哦。你给出的例子还少了个end。
[其他解释]
用isnull函数判断一下是否为空,一步一步排错吗,现在说的都没有得到证实!
[其他解释]
怎么会是空呢??? 太奇怪了。
print '执行到了3'
set @sqlstr= 'select * ,'''+@EsName+'''+ as EsName,'''+@EsTypeName+''' as EsTypeName,'''+@EnergyTypeName+''' as EnergyTypeName,'+Cast(@EsPct as varchar(16))+' as EsPct,'+Cast(@ActPct as varchar(16))+' as ActPct,'''+@BuildingName+''' as BuildingName from '
+
' ( select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayBefore+''' and (DateFlag =''A'' or DateFlag =''T'')) as pt '
+' pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt '
+' union all '+
' select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayAccomplish+''' and DateFlag =''B'') as pt '
+' pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt '
+' ) as rall '
--set @sqlstr='select * from ESDataSumByHour'
字符串赋值没有什么问题啊,也没有提示什么错误。
set @sqlstr='select * from ESDataSumByHour'
这样就行,拼接那个长的就不行。 怎么会是啊,不明白???
print @sqlstr
print '执行到了3.1'
[其他解释]
加了“select @sqlstr =''” ,还是不行啊,大师。。。
print '执行到了3'
select @sqlstr =''
set @sqlstr= @sqlstr + '开始了'
set @sqlstr = @sqlstr + 'select * ,'''+@EsName+'''+ as EsName,'''+@EsTypeName+''' as EsTypeName,'''+@EnergyTypeName+''' as EnergyTypeName,'+Cast(@EsPct as varchar(16))+' as EsPct,'+Cast(@ActPct as varchar(16))+' as ActPct,'''+@BuildingName+''' as BuildingName from '
+ ' ( select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayBefore+''' and (DateFlag =''A'' or DateFlag =''T'')) as pt '
+ ' pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt '
+ ' union all '
+ ' select * from (select * from ESDataSumByHour where EsId='''+@EsId+''' and BuildingNo='''+@BuildingNo+''' and EnergyType='''+@EnergyType+''' and DADay='''+@DADayAccomplish+''' and DateFlag =''B'') as pt '
+' pivot (sum(SumQty) for DAHour in ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23])) as rt '
+' ) as rall '
set @sqlstr=@sqlstr + '结束了'
print @sqlstr
print '执行到了3.1'
还是不行啊,大师。。。 难道中间拼接了那么长的地方被认为了“null”,可是怎么会是“null”的。其中有变量为“NULL”,是这样吗???
[其他解释]
试一试,select @sqlstr