본문 바로가기
IT 자료

SQLSTATE=0168D 에러

by 성곤 2014. 11. 24.
반응형

특정 웹페이지가 뜨지 않는다는 SR요청에 따라서 확인했다.


문제는 쿼리부분


내가 만든 쿼리가 아니라서 다행이네

누군지는 몰라도 쿼리를 정말 대충 짠 것 같다.





-- 에러 내용 --


System.FormatException
입력 문자열의 형식이 잘못되었습니다.
Stack Trace:
   위치: System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   위치: System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)
   위치: IBM.Data.DB2Types.DB2DecimalFloat.op_Explicit(DB2DecimalFloat source)
   위치: IBM.Data.DB2Types.DB2DecimalFloat.get_Value()
   위치: IBM.Data.DB2.DB2DataWrapper.GetValue()
   위치: IBM.Data.DB2.DB2DataReader.GetValue(Int32 i)
   위치: Quest.Toad.DB2.DB2ToadConnection.ReadRow(IDataReader reader, FastTable datatable, FastReadOptions options, PrePostProcessHandler prePostProcessHandler)
   위치: Quest.Toad.Db.ToadDataAdapter.InternalReadBackground()



Error    입력 문자열의 형식이 잘못되었습니다.


  364: [IBM][DB2/AIX64] SQL0364W  DECFLOAT exception "INVALID OPERATION" has occurred during "DIVISION" operation.  SQLSTATE=0168D

--- 에러 내용 끝 ---


에러의 이유는 간단했다.


산술식이 잘못되었다. NULL값이 분모에 있었다...



예외처리를 해줘야한다.


SELECT

CASE

WHEN

SUM( NVL( COLUMN_1, 0 ) ) = 0

THEN

0

ELSE

SUM( NVL( COLUMN_2, 0) )

/ SUM( NVL( COLUMN_1, 0) )

END


FROM TABLE_1


CASE문을 이용해서 분모가 '0'이나 'NULL'이면 예외처리를 해주는게 좋다.





해당 내용의 출처를 밝힙니다.

출처 : IBM Knowledge Center




반응형

'IT 자료' 카테고리의 다른 글

유비리포트 Ubireport 메뉴얼  (0) 2014.11.25
c:if  (0) 2014.11.25
JavaScript random()  (0) 2014.11.24
DB2 ROWNUM  (0) 2014.11.23
DB2 SQL0696N 에러  (0) 2014.11.22