본문 바로가기
Database/Postgre

[PostgreSQL] SQL Error [42883]: ERROR: function pg_catalog.btrim(numeric) does not exist

by 리콩알 2024. 7. 10.
반응형

오늘도 포스트그레 에러로 돌아왔다..

프로시저 오라클에서 포스트그레로 컨버전 하기 너어무 어렵쟈나😭

SQL Error [42883]: ERROR: function pg_catalog.btrim(numeric) does not exist

 

이건 무슨 에러인고... 보니 btrim 함수는 문자열을 다루는 함수인데 실제로 들어간 데이터가 numeric 데이터 타입에 대해 호출해서 문제라넹..? 데이터 타입과 실제 제공된 데이터 타입이 일치하지 않는 가봄...🤔

 

trim을 쓰는 의심스러운 부분이 아래와 같은 부분인데...

( 로직 노출로 인해 테이블 명 및 로직 일부를 임의의 변수로 대체 하였습니다.)

//상단 선언 부분 생략
v_errflag     	 varchar(1);
v_errnum     	 bigint;
v_errmsg     	 varchar(1000);

BEGIN
    IF trim(both TEST_TEMP.COLNUMN1) IS NULL THEN
       v_errnum := 00001; 
       v_errmsg := 'COLNUMN1은 필수입력 항목입니다.';
       v_errflag := 'E';
       .
       .
       .

 

 

우선, TRIM을 사용하고 있는 해당 테이블의 특정 컬럼이 NUMBER타입으로 정의되어있는지 확인한다.

오.. 아니나 다를까 COLNUMN1의 type이 NUMBER로 정의 되어있네유....

아래와 같이 문자열 타입으로 선언해주면!!!! 해당 에러 해결 완료!!  

 IF trim(both ' ' from TEST_TEMP.COLNUMN1::text) IS NULL THEN....

 

전체 로직 변경 소스는 아래와 같다!!

//상단 선언 부분 생략
v_errflag     	 varchar(1);
v_errnum     	 bigint;
v_errmsg     	 varchar(1000);

BEGIN
    IF trim(both ' ' from TEST_TEMP.COLNUMN1::text) IS NULL THEN
       v_errnum := 00001; 
       v_errmsg := 'COLNUMN1은 필수입력 항목입니다.';
       v_errflag := 'E';
       .
       .
       .

 

다음에 또 새로운 에러로 만나 포스트그레~~

반응형