gpt4 book ai didi

sql-server-2008 - 我可以用什么来代替 sql 函数中的 #Temp 表

转载 作者:行者123 更新时间:2023-12-04 04:55:28 25 4
gpt4 key购买 nike

这是我的 sql 查询。

CREATE FUNCTION UF_GetOrderProducts
(
@OrderId int
)
RETURNS VARCHAR(500)
AS
BEGIN
SELECT Identity(int,1,1) ID, ProductId INTO #Temp FROM OrderProduct WHERE OrderId = @OrderId

Declare @Id int,
@Count int,
@LoopCount int,
@ProductList VARCHAR(500),
@ProductListTemp VARCHAR(500)

SET @Count = (Select Count(*) From #Temp)

SET @LoopCount = 1
SET @ProductList = ''
WHILE @LoopCount <= @Count
BEGIN



SET @ProductListTemp =( SELECT Name FROM Product WHERE ProductId =(Select ProductId from #Temp Where ID = @LoopCount))
SET @ProductList +=@ProductListTemp + '<br/>'
Set @LoopCount=@LoopCount + 1


END
DROP TABLE #Temp

RETURN @ProductList

END
GO

我必须在#Temp 表中循环。你有什么其他的建议?

最佳答案

您可以使用表变量代替临时表。

declare @Temp TABLE (ID int identity, ProductId int)

insert into @Temp(ProductId)
select ProductId
from OrderProduct
where OrderId = @OrderId

但是你可以在没有循环的情况下重写你的函数。

像这样的事情应该做你想做的。
create function IF_GetOrderProducts
(
@OrderId int
)
returns varchar(500)
as
begin
return
(
select Name+'<br/>'
from Product as P
inner join OrderProduct as OP
on P.ProductId = OP.ProductId
where OP.OrderId = @OrderId
for xml path(''), type
).value('.', 'varchar(500)')
end

关于sql-server-2008 - 我可以用什么来代替 sql 函数中的 #Temp 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com