尝试在循环中使用print语句时,我得到了意外的结果。
这是循环。现在,我碰巧知道此表中没有早于2012年6月的createDtTm的数据。
我试图返回格式良好的结果,并在单个窗格中清除掉空值,因此所有的转换和放置返回的数据都会打印到@text变量中。
Declare @month int, @day int, @text VARCHAR(max)
Select @month=1
Select @day=1
While @month < 13 Begin
While @day < 32 Begin
select @month, @day
set @text = (SELECT cast(min([createDtTm]) as varchar(50)) + ' | ' + cast(max([createDtTm]) as varchar(50)) + ' | ' + cast(DATEDIFF (ss, min([createDtTm]), max([createDtTm])) as varchar(50))
FROM [database].[dbo].[table]
where datepart(yy, createDtTm) = 2012
and datepart(mm, createDtTm) = @month
and datepart(dd, createDtTm) = @day
and datepart(hh, createDtTm) > 17
and cast(Request as varchar(max)) like '%sometext%');
print @text
Set @day = @day + 1
End
Set @month = @month + 1
Set @day = 1
End
此查询返回我期望的结果。
当我注释掉调试语句
时select @month, @day
我没有结果。在内部循环中仅执行SELECT会返回一个长而长的窗格,其中的文本类似于&#34; NULL&#34;和#34;(1行受影响)&#34;,我宁愿避免。
思考?我今天早上刚刚学会了变量设置,PRINT,WHILE和BEGIN / END语句的机制,所以我很高兴我能回复一些东西,但我想了解明显的不一致性。
答案 0 :(得分:0)
您需要使用
declare @a VARCHAR(max);
declare @b VARCHAR(max);
SELECT @a = '1',@b = '2'
print @a + @b
您无法将选择查询打印为打印