밥줄/DB

[DB] Altibase error : Invalid use of host variables

뚱땅개미 2021. 4. 16. 11:42
반응형

어쩌다 보니 쿼리로 문자를 파싱을 하게 되었다.......


파싱하려는 NAME의 형식은
01=AA;02=BB;03=CC
02에 대한 내용만 파싱하고 싶어서 아래와 같이 ... 작성하였다.

SELECT DECODE(INSTR(#NAME#, '='), 0, disp_name, SUBSTR(#NAME#, INSTR(#NAME#, '=', 1, 2)+1, INSTR (#NAME#, ';', 1, 2)-INSTR(#NAME#, '=', 1, 2)-1)) AS NAME FROM DUAL;

결과 java.sql.SQLException:Invalid use of host variables

하지만 사전에 테스트했을 때는 잘만 되었던 쿼리가 altibase에서는 에러가 퐝퐝~

altibase에서 함수에 변형되는 파라미터가 들어갈 때 발생하는 에러라고 한다.
참고 블로그에서 해결한 대로 cast를 사용하여 적용하니 그제서야 잘 돌아간다...ㅎㅎㅎ

SELECT DECODE(INSTR(cast(#NAME# as varchar(100)), '='), 0, cast(#NAME# as varchar(100)), SUBSTR(cast(#NAME# as varchar(100)), INSTR(cast(#NAME# as varchar(100)), '=', 1, 2)+1, INSTR (cast(#NAME# as varchar(100)), ';', 1, 2)-INSTR(cast(#NAME# as varchar(100)), '=', 1, 2)-1)) AS NAME FROM DUAL;

결과 BB

그리고 INSTR시... 마지막 04번째 파싱을 할 때는 뒤 자리를 생략해도 된다는 것을... 배웠다...!

SELECT DECODE(INSTR(#NAME#, '='), 0, #NAME#, SUBSTR(#NAME#, INSTR(#NAME#, '=', 1, 4)+1)) AS NAME FROM DUAL

참고
http://vicki.tistory.com/862

반응형

'밥줄 > DB' 카테고리의 다른 글

[DB] Altibase, Oracle DB Plan  (0) 2025.08.17
MariaDB 인증방식 변경(sha256 가능여부? 그리고 ed25519)  (1) 2025.08.17
[DB] aexport, iloader (altibase)  (0) 2021.04.16
[DB] Oracle MERGE INTO  (0) 2021.04.16