0
如何確保即使沒有數據存在,它也會始終返回結果集?未返回結果集
現在如果#TMP_SUMMARY1
沒有返回任何行。
我如何能確保這下面的查詢返回我的表沒有行,而不僅僅是告訴我下面這個消息,並沒有結果選項卡此消息]選項卡。
(0行(S)的影響)
這不返回在這種情況下設置的結果是造成了我的噩夢!
IF (@SUMMARY = 'Agent Summary')
BEGIN
DECLARE @cols1 AS NVARCHAR(MAX),
@colSum1 AS NVARCHAR(MAX),
@query1 AS NVARCHAR(MAX)
select @cols1 = STUFF((SELECT distinct ',' + QUOTENAME(Agent)
from #TMP_SUMMARY1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') ,1,1,'')
print @cols1
select @colSum1 = STUFF((SELECT distinct ', Sum(' + QUOTENAME(Agent)+') as ' +QUOTENAME(Agent)
from #TMP_SUMMARY1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') ,1,1,'')
print @colSum1
set @query1 = 'select
case when [PAYMENT TYPE] is null then ''*GRAND TOTAL'' else [Credit/Debit] end [Credit/Debit],
case when [PAYMENT TYPE] is null then '''' else [PAYMENT TYPE] end [PAYMENT TYPE],
'[email protected] +'
from
(
select [Agent] ,
[Credit/Debit],
[PAYMENT TYPE],
value
from #TMP_SUMMARY2
unpivot
(
value
for [Credit/Debit] in ([Amount Credit], [Amount Debit])
) unpiv
) src
pivot
(
sum(value)
for agent in ('[email protected]+')
) piv
group by GROUPING SETS ([Credit/Debit], [PAYMENT TYPE]), ([Credit/Debit])'
execute(@query1)
END
這不回答你的問題(所以我在這裏把它當作一個註釋),但你真的應該考慮使用'sp_executesql'而不是'EXECUTE',讓您在動態SQL內有針對SQL注入防護查詢。 http://www.sommarskog.se/dynamic_sql.html#sp_executesql – 2013-03-14 13:31:28