공간 쿼리 (SQL Server 2016)에서 매개 변수화 된 저장 프로 시저를 만들려고합니다. 기본 공간 쿼리는 매개 변수 (/경도)가 하드 코딩 된 경우 잘 작동합니다 (예 : 174.7115).공간 쿼리 : 사용자 정의 루틴 또는 집계 "지역"을 실행하는 동안 .NET Framework 오류가 발생했습니다.
위도 (@long
)에 대한 매개 변수를 사용하여 저장 프로 시저를 만들려고하면 다음 오류가 발생합니다. 메시지 6522
여기에 63,210, 수준 16, 상태 1, 프로 시저 Spatial8, 5 호선 [일괄 시작 줄 0] 닷넷 프레임 워크 오류가 사용자 정의 루틴 또는 집계 "지리"의 실행 중에 발생 시스템 .FormatException : 24141 : 숫자 11 위치의 입력 예상됩니다. 입력에는 @Long이 있습니다. System.FormatException : Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText (OpenGisType 형) 에서 Microsoft.SqlServer.Types.WellKnownTextReader.RecognizeDouble() Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText (부울 parseParentheses)에서 에서 에서 Microsoft.SqlServer.Types.SqlGeography.GeographyFromText에서 Microsoft.SqlServer.Types.SqlGeography.ParseText (OpenGisType 타입 SqlChars taggedText, INT32의 SRID) 에서 Microsoft.SqlServer.Types.WellKnownTextReader.Read (OpenGisType 유형의 INT32 SRID) (OpenGisType 형식, SqlChars taggedText, Int32 srid) .........................
는 저장된 프로 시저입니다 .., 제안, 또는 작업 방법은
CREATE PROC Spatial8 @Long decimal(9,6)
AS
DECLARE @Car geography;
SET @Car = geography::STGeomFromText ('Point(@Long -36.81143)', 4326);
/* Add 20m buffer to each side of the cars position (Lat and long) */
DECLARE @Pointbuffer geography;
SET @Pointbuffer = @Car.STBuffer ('20');
Select *, @Pointbuffer.STContains(geography ::Point(Latitude, Longitude, 4326)) As PointBuffer
From dbo.Location
WHERE @Pointbuffer.STContains(geography ::Point(Latitude, Longitude, 4326)) = 1
어떤 조언을 주시면 감사하겠습니다. Geography to Geometry를 바꾸려고 시도했지만 여전히 동일한 오류가 발생합니다.