2013-03-03 35 views
-1

在我的存儲過程返回空值,我串聯我的結果到像一個字符串:的毗連結果在一個字符串中的存儲過程

Problem1|Problem2|Problem3 

當我試圖在一個變量@display來存儲,它將返回null 。當我運行查詢而不將其存儲到變量時,它會返回結果。不知道爲什麼它返回null?

declare @display nvarchar(500) 

select 
@display = @display + gp2.ProblemDesc + '|' 
from (SELECT gp.GrantProblemID, gp.ProblemDesc, gps.GrantProblemStatus, row_number() over (partition by gp.grantproblemid order by p.periodid desc) ranking from MergedProgressReport.dbo.[PeriodAgencyGrantProblems] pagp 
inner join MergedProgressReport.dbo.PeriodAgencyGrants pag on pag.PeriodAgencyGrantsID = pagp.PeriodAgencyGrantID and pag.GrantNumber = '2011UMWX0001' 
inner join MergedProgressReport.dbo.periodagencyinfo pai on pag.PeriodAgencyInfoID = pai.PeriodAgencyInfoID inner join MergedProgressReport.dbo.Periods p on p.PeriodID = pai.PeriodID 
inner join MergedProgressReport.dbo.GrantProblemStatus gps on pagp.GrantProblemStatusID = gps.GrantProblemStatusID inner join MergedProgressReport.dbo.GrantProblems gp on pagp.GrantProblemID = gp.GrantProblemID and gp.GrantProblemAreaID = 7) xx 
right join MergedProgressReport.dbo.GrantProblems gp2 on xx.GrantProblemID = gp2.GrantProblemID and xx.ranking = 1 where gp2.GrantProblemAreaID = 7 

Select @display 
+0

難道是因爲你有兩個結果集? – thebjorn 2013-03-03 12:20:16

回答

1

試試這個。可能你需要初始化變量。

declare @display nvarchar(500) 
set @display = '' 

總之,在聲明變量之後編寫查詢之前,您已經缺少set語句。

+0

這工作,但我需要做的時候它通過一個proc? – Chaka 2013-03-03 12:28:09

+0

例如:Exec MyExproc(@SQl nvarchar(3000),@display nvarchar(200)OUTPUT) – Chaka 2013-03-03 12:30:00

+0

好像@display是您的存儲過程參數,而不是變量。 – 2013-03-03 12:31:53