首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL串“ print” 不不来,怪哉,解决方法

2012-12-15 
SQL串“print” 不不来,怪哉,急急急急。。。 declare@sqlstrvarchar(2500) --调试SQLif(@countrowbefore 0an

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

热点排行