我有一个具有输入参数的存储过程:
@Latitude float
, @Longitude float
但是当我传递这些值时:
@Latitude=-28.640328248358344
,@Longitude=153.61249352645871
存储在表中的值是:
Lat: -28.6403
Lng: 153.612
如果我在表上进行标准插入或更新,则值是正确的。
我尝试将参数更改为 float(54) 但没有任何区别......我使用浮点数的原因是因为 Lat/Lng 实际上是从地理列计算出来的列(并且它在设计器中声明它们是浮点数) - 我通过将存储过程中的 lat/lng 值插入到几个 varchar 列中,仔细检查了它是否与计算的 cols 无关。
我正在使用 EF 并且可以确认实体中的值是正确的,并且我已经检查了 SQL Profiler 以确认完整的值包含在 exec 调用中。
编辑:我将这些值插入到地理类型的名为 GeoLocation 的列中:
GeoLocation = geography::STPointFromText('POINT(' + CONVERT(varchar, @Longitude) + ' ' + CONVERT(varchar, @Latitude) + ')',4326)