위도와 경도를 사용하여 한 위치에서 다른 위치까지의 거리를 마일 단위로 측정하는 함수를 작성하는 방법을 파악하려고합니다. EXECUTE가 실행될 때 매개 변수가 추가됩니다. "geography :: Point()"및 "STDistance"float 대신 사용하려고합니다.피연산자 유형 충돌 지형이 부동 소수점과 호환되지 않습니다.
IF OBJECT_ID('dbo.udfDistanceMiles') IS NOT NULL
DROP FUNCTION dbo.udfDistanceMiles
GO
CREATE FUNCTION dbo.udfDistanceMiles
(
@long1 geography,
@long2 geography,
@lat1 geography,
@lat2 geography
)
RETURNS geography
AS
BEGIN
DECLARE @from geography
DECLARE @to geography
DECLARE @kilo geography
DECLARE @miles as geography
SET @from = geography::Point(@lat1,@long1,4268);
SET @to = geography::Point(@lat2,@long2,4268);
SET @kilo = (SELECT @from.STDistance(@to));
BEGIN
SET @miles = (@kilo * '.621371');
END
RETURN @miles
END
GO
이것은 공간 데이터베이스를 사용하는 수업에 대한 과제이지만, 알아낼 수없는 걸음으로 이어졌습니다. 함수를 만들려고 할 때이 피연산자 유형 충돌을 실행 중입니다.
Msg 206, Level 16, State 2, Procedure udfDistanceMiles, Line 19
Operand type clash: geography is incompatible with float
Msg 206, Level 16, State 2, Procedure udfDistanceMiles, Line 19
Operand type clash: geography is incompatible with float
Msg 206, Level 16, State 2, Procedure udfDistanceMiles, Line 20
Operand type clash: geography is incompatible with float
Msg 206, Level 16, State 2, Procedure udfDistanceMiles, Line 20
Operand type clash: geography is incompatible with float
Msg 206, Level 16, State 2, Procedure udfDistanceMiles, Line 21
Operand type clash: float is incompatible with geography
Msg 403, Level 16, State 1, Procedure udfDistanceMiles, Line 23
Invalid operator for data type. Operator equals multiply, type equals geography.
newb에 대한 도움을 주시면 감사하겠습니다.
감사
존