将存储过程输出发送为逗号分隔而不是多行

问题描述 投票:-1回答:1

我有一个存储过程,返回多行5列:

SELECT Travel, ID, Dept, Role, Country 
FROM TravelManager

例如,我得到:

DName   ID   Dept  Role   Country
----------------------------------
Travel  23   HR    H      USA
Travel  29   MR    M      AUS
Travel  32   FI    M      UK

有没有办法让我以逗号分隔值发送它,因为第一列是相同的,我想只发送一行而不在多行中复制名称,并且还将其他列作为一行仅作为逗号分隔值发送。

有什么想法和更好的方法吗?另外我如何修改我的选择查询?

我的第一列是存储过程输入,所以返回那个:)

我在考虑临时表或表变量,但如果是这样怎么办?请帮忙

sql stored-procedures sql-server-2005 temp-tables table-variable
1个回答
1
投票

它可以通过使用游标来完成

declare @Travel nvarchar(max)
declare @ID int
declare @Country nvarchar(max)
declare @Dept nvarchar(max)
declare @Role nvarchar(max)

declare @string nvarchar(max)

declare cursor1 cursor for
     SELECT  ID, Dept, Role, Country 
     FROM TravelManager

set @string = '';

open cursor1

fetch next from cursor1 into  @ID, @Dept, @Role, @Country

while (@@Fetch_Status <> -1)    
begin
    set @string += convert(varchar(10), @ID) + ',' +
                   @Dept + ',' + @Role + ',' + @Country + char(13) // char(13) for new line
    fetch next from cursor1 into  @ID, @Dept, @Role, @Country
end

close cursor1
deallocate cursor1


select  @string as ReturnValue

char(13)添加回车,否则你可以添加\ n我猜

编辑:删除选择旅行

© www.soinside.com 2019 - 2024. All rights reserved.