这里不需要循环机制。试试这个下面
DECLARE @MENUID VARCHAR(MAX)='';
select @MenuID = @MENUID+ID_Menu+',' from OrderDetail where ID_Order = @ID_Order
--Removing last comma ',' with substring function.
SELECT @MENUID= SUBSTRING(@MENUID, 1, LEN(@MENUID)-1)
PRINT @MENUID
说明:
这里您在打印@MENUID
如何而来的M005 M001从,M002,M003,M004,M005来了?因为它是在最后阶段。这意味着它已经在循环内部将值存储在变量@MENUID
中。现在通过在循环跳转到集合中的下一个值之前捕获它自己来实现这一诀窍。
另一种方式Stuff
与FOR XML PATH('')
做的。堆栈溢出有很多答案。
--STUFF Used to remove first comma ','
--For xml path used to generate comma concatenated xml.
SELECT @MENUID=STUFF ((Select ','+ID_Menu from OrderDetail
where ID_Order = @ID_Order FOR XML PATH('')), 1,1,'')
)
PRINT @MENUID;