에러 상황
지난번 포스팅에서 소개했던 ora2pg 오픈소스 도구를 이용해서
Oracle에서 PostgreSQL로 마이그레이션을 작업하는데
functions, procedure, trigger, view의 경우 오류가 발생하여 수작업이 필요했다.
수작업을 진행하면서 어디서 오류가 발생했는지 확인하는데
round 함수를 사용하는 쿼리에서 오류가 발생했다.
select round(a.order_price, 2) from order_detail a;
SQL Error [42883]: 오류: round(double precision, integer) 이름의 함수가 없음
Hint: 지정된 이름 및 인자 자료형과 일치하는 함수가 없습니다. 명시적 형변환자를 추가해야 할 수도 있습니다.
원인
오류내용 중 Hint 부분을 보면 자료형과 일치하는 함수가 없다고 나온다.
그래서 찾아보니 round 함수에서 사용하는 인자는 numeric 인데
내가 사용한 order_price 컬럼은 float8 이기 때문에
자료형이 일치하지 않아 발생한 오류다.
해결방법
해결방법은 간단하긴 하다.
자료형이 다른 인자에 ::numeric으로 자료형을 지정하여 형변환을 해주면 된다.
select round(a.order_price::numeric, 2) from order_detail a;