我正在尝试将 X、Y 坐标列表插入到RideOfferCoordinates
表中,但存储过程函数始终以相同的顺序插入它们,而不管它们的发送顺序如何。
我将坐标作为 xml 字符串发送:
< Coordinates>
< row X="34.9116" Y="32.30498"/>
< row X="34.91151" Y="32.305420000000005"/>
< row X="34.85826" Y="32.328250000000004"/>
< row X="34.855790000000006" Y="32.32117"/>
< /Coordinates>
到这个 sp 函数:
ALTER PROCEDURE dbo.SaveRideOfferCoordinates
(
@rideOfferId Int,
@coordinatesXml ntext
)
AS
declare @idoc int;
exec sp_xml_preparedocument @idoc out, @coordinatesXml
SELECT X,Y
into #temp
from openxml(@idoc, '/Coordinates/row',1)
with (
X real,
Y real
)
insert into RideOfferCoordinates select @rideOfferId, X, Y from #temp
drop table #temp
RETURN 0
这应该X="34.9116"
Y="32.30498"
首先插入到表中,但它首先插入X="34.855790000000006"
Y="32.32117"
,X="34.9116"
Y="32.30498"
最后插入。
我唯一的猜测是 sp 出于某种原因根据 X 值以升序方式插入它们..