테이블에 환율 필드를 DECIMAL(36,30) 잡았다.
프로시저 까지는 별 문제없이 작동하는데 닷넷 프로그램에서 조회 하면 오류가 발생한다.
변환 오버플로가 발생했습니다.
위치: System.Data.SqlClient.SqlBuffer.get_Decimal()
위치: System.Data.SqlClient.SqlBuffer.get_Value()
위치: System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
...
DECIMAL 사이즈를 (36,28) 로 잡으면 오류가 사라진다.
어떤 사람은 아래와 같이 하면 된다고는 하는데 테스트는 안해봤다.
SqlDataAdapter da = new SqlDataAdapter("SELECT bigDecimal FROM testDecimal", con);
da.ReturnProviderSpecificTypes = true;
출처 : http://social.msdn.microsoft.com/Forums/en-US/f3b4c193-c332-4a99-9c20-cd1c226ec37b/conversion-overflow-with-sqldataadapter?forum=adodotnetdataproviders
몇일뒤... 다시 오류 발생..
자리수 상관없이 총 데이터 길이가 28 이상이 되면 오류가 난다.
SqlServer에서 잡은 데이터 길이와 상관 없이 C# decimal 형식의 데이터 총 길이가 28 이다.
그러니 결국 C# decimal 형식에 맞게 데이터를 줄여야 한다.
'프로그램 경험 > .Net' 카테고리의 다른 글
[C#] error CS0016, 출력 파일에 쓸 수 없습니다, 액세스가 거부되었습니다 (0) | 2014.02.18 |
---|---|
[C#] 어셈블리 설치를 완료하지 못했습니다(hr = 0x8007000b). 검색이 종료됩니다. (0) | 2014.02.12 |
[.NET] 스마트클라이언트 어셈블리 최신버전 다운 안되는 문제 (0) | 2014.01.20 |
[.NET] GAC 위치 (0) | 2014.01.20 |
[ASP.NET] ASP.NET 설치 (0) | 2013.07.05 |