데이터가 많은 테이블의 건 수를 조회하려고 할 때

SQL0802N
Arithmetic overflow or other arithmetic exception occurred.
산술 오버플로우 또는 다른 산술 예외가 발생했습니다.


위와 같은 오류가 발생할 수 있다.


이는, MAX_LONGINT_INT 제약 (2,147,483,647) 보다 더 많은 건 수를 담고 있는 테이블에

SELECT COUNT 문을 수행했을 경우 발생하며


이 때는 COUNT_BIG 함수를 사용하면 정상적으로 수행할 수 있다.


select count_big(*) from HUGE_TABLE;


한편, INT 타입의 컬럼을 SUM 하다보면 INT 타입의 크기 제약으로 인해 산술 오버플로우가 발생할 경우도 있는데

이런 경우에는 CAST를 해서 SUM 하면 된다.

 

select SUM(CAST(col1 as BIGINT)) from TABLE;

select SUM(CONVERT(bigint, col1)) from TABLE;

Posted by in0de
,
SQL0101N The statement is too long or too complex.

복잡한 쿼리가 수행되는 경우이거나,
32bit 환경에서 잘 수행되던 쿼리가 64bit 환경으로 바뀌면서 발생하거나
클라이언트의 버전에 따라서 Statement heap이 모자라다는 오류가 발생할 수 있다.

Statement heap은
동적 SQL의 경우 Precompile시,
정적 Package의 경우 bind시 사용하는 공간인데
32bit 의 경우 2048, 64bit의 경우 4096이 default이며
필요 시 다음과 같이 확장할 수 있다.

db2 update db cfg for ${db} using STMTHEAP NNNN
Posted by in0de
,