프로젝트 지원 업무가 있어 ORACLE의 프로시저를 변환 작업 중 정규식 함수로 프로시저 컴파일이 되지 않는 문제가 발생을 했었다.
DB2에서 제공되는 정규식 함수를 찾아 보니 9개 정도가 된다.
- REGR_AVGX, REGR_AVGY, REGR_COUNT, REGR_INTRCEPT, REGR_R2, REGR_SLOPE, REGR_SXX, REGR_SXY, REGR_SYY
통계와 관련된 어려운 함수들만 제공되는 것 같다.
개발자가 문의한 함수는 REGEXP_SUBSTR() 인데 위에 언급했다시피 존재하지 않는다. 웹에서 검색을 해 보니, (V8, V9.1 버전 시절의 오라클 함수 포팅 방법인) java 함수로 해당 함수를 포팅할 수 있도록 IBM Developerworks 기술 문서에 기술되어 있었다.
제공되는 함수는 4가지 (REGEXP_LIKE, REGEXT_REPLACE, REGEXP_SUBSTR, REGEXP_INSTR)…
잘 사용되는 대부분의 오라클 함수는 지원될 것이라 생각했는데, 이렇게 피해가는 함수들이 존재를 한다.
해당 자바 함수를 DB에 생성하기 위해서는 db2_regex.jar 파일이 필요하다. (블로그에 파일이 첨부되지 않으므로, jar 파일은 글 아래의 URL 주소를 통하여 다운로드 받도록 한다.)
해당 JAR 파일은 SQLJ.INSTALL_JAR 프로시저를 이용하여 설치한다.
구문 call sqlj.install_jar(‘file:JAR_파일경로_파일명’, JAR_ID) 실행 예 CALL SQLJ.INSTALL_JAR('file:/tmp/avalanche/db2_regex/lib/db2_regex.jar', db2_regex) |
생성해야 되는 정규식 함수 script는 다음과 같다.
CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3)) RETURNS INTEGER CREATE OR REPLACE FUNCTION REGEXP_REPLACE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), REPLACEMENT VARCHAR(3000), POSITION INTEGER, OCCURRENCE INTEGER, MODES VARCHAR(3)) RETURNS VARCHAR(3000) CREATE OR REPLACE FUNCTION REGEXP_SUBSTR(SOURCE VARCHAR(3000), REGEX VARCHAR(512), POSITION INTEGER, OCCURRENCE INTEGER, MODES VARCHAR(3)) RETURNS VARCHAR(3000) RETURNS INTEGER |
jar 설치부터 자바 함수 생성은 하나의 script로 작성하여 생성 작업을 완료할 수 있다.
스크립트 파일 예 vi /work/reg.db2 CALL SQLJ.INSTALL_JAR('file:/work/db2_regex.jar', db2_regex) @ CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3)) RETURNS INTEGER 생성 예 db2 connect to 디비명 user 사용자ID using 사용자비밀번호 db2 –td@ –v –f /work/reg.db2 db2 terminate |
참고 문서
1. DB2에서 제공하는 정규식 함수
2. 자바 정규식 함수 생성 및 실행
http://www.ibm.com/developerworks/kr/data/library/techarticle/dm-1011db2luwpatternmatch/
'Note' 카테고리의 다른 글
[관리] Lock 모니터링 및 세션 관리 (0) | 2012.09.11 |
---|---|
[관리] 접속한 Application 개수 및 정보 확인 (0) | 2012.09.10 |
[SQL] Multi Action Trigger (0) | 2012.05.31 |
[관리] Offline DB 백업의 복원 (0) | 2012.04.23 |
[이관] IBM에서 제공하는 DBMS Migration 도구들 (0) | 2012.03.20 |