将存储过程输出作为逗号分隔而不是多行发送
Sending the stored procedure output as comma-separated rather than multiple rows
我有一个存储过程 returns 多行 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
我有什么办法可以将其作为逗号分隔值发送,因为第一列是相同的,我只想发送一行而不在多行中重复名称,并将其他列作为一行仅作为逗号分隔发送值。
有什么想法和更好的方法吗?另外,我将如何修改我的 select 查询?
我的第一列是存储过程输入,所以也返回它:)
我正在考虑使用临时 table 或 table 变量,但如果是这样该怎么办?请帮助
可以使用游标来完成
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)
添加回车 return 否则你可以添加 \n 我猜
编辑:删除了选择旅行
我有一个存储过程 returns 多行 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
我有什么办法可以将其作为逗号分隔值发送,因为第一列是相同的,我只想发送一行而不在多行中重复名称,并将其他列作为一行仅作为逗号分隔发送值。
有什么想法和更好的方法吗?另外,我将如何修改我的 select 查询?
我的第一列是存储过程输入,所以也返回它:)
我正在考虑使用临时 table 或 table 变量,但如果是这样该怎么办?请帮助
可以使用游标来完成
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)
添加回车 return 否则你可以添加 \n 我猜
编辑:删除了选择旅行