-1

私のストアド プロシージャでは、結果を次のような 1 つの文字列に連結します。

Problem1|Problem2|Problem3

variable に格納しようとすると、@displaynull が返されます。変数に格納せずにクエリを実行すると、結果が返されます。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
4

1 に答える 1

1

これを試して。おそらく、変数を初期化する必要があります。

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

つまりset、変数を宣言した後にクエリを書く前に、ステートメントがありません。

于 2013-03-03T12:26:12.717 に答える