QA 환경뿐만 아니라 내 로컬 환경에서 올바르게 작동하는 저장 프로 시저가 있습니다.
메시지 번호 = "8115"심각도 = "16"상태 = "8nvarchar를 데이터 형식 숫자로 변환하는 산술 오버플로 오류
그러나 클라이언트에서 UAT 환경에서 그 오류
System.Data.SqlClient.SqlException에게 준다 "> 산술 오버플로 오류 nvarchar를 데이터 유형 numeric으로 변환합니다.
또한 클라이언트 위치에 설치된 로컬 인스턴스 중 하나에서 정상적으로 작동합니다. 난 코드 라인을 umcommenting/주석에 의한 오류를 범 코드 라인을 발견하고 변수 @TotalHHInternalTo
가 기억에 전달 된 탐색 기준의 일부 타입의 소수의 파라미터 다운
(
@TotalHHInternalTo IS NULL
OR
(
IsNumeric(E.[Xml].value(
'declare default element namespace "http://www.xyz/1.0";
(/Event/Data/CustomData/DataXML/ProductData/ProductParty/ProductCategory[@code != ''Protection'']/Product/FundValue)[1]',
'nvarchar(50)'
)) = 1
AND
EXISTS
(
SELECT
1
FROM E.[Xml].nodes(
'declare default element namespace "http://www.xyz/1.0";
/Event/Data/CustomData/DataXML/ProductData/ProductParty/ProductCategory[@code != ''Protection'']/Product') as P(E)
HAVING SUM(P.E.value(
'declare default element namespace "http://www.xyz/1.0";
(FundValue)[1]',
'decimal'
)) <= @TotalHHInternalTo
)
)
)
행을 제로 프로 시저를 XML로 저장합니다. 제품 파티에서 4 가지 제품 카테고리가 있으며 보호 유형을 제외한 모든 기금 가치를 합산해야합니다. 이 3 가지 유형의 합이 @TotalHHInternalTo
미만인 경우 검색 결과에 표시하고 싶습니다.
isNumeric
조건을 추가하여 xml에서 가져온 값이 숫자 값인지 확인했습니다.
그러나 여전히 오버플로 오류가 발생합니다.
Richard가 제안한대로 변경했습니다. 여전히 동일한 오류가 발생합니다. nvarchar를 데이터 형식 numeric으로 변환하는 산술 오버플로 오류. –
rajn70
적어도이 오류의 원인이되는 작은 부분을 XML 조각에 게시 할 수 있습니까? 분열하고 정복하기가 너무 어렵지 않아야합니다. – RichardTheKiwi
이것은 FundValue를 가져 오는 xml입니다. – rajn70