본문 바로가기

개발15

오라클 CONNECT BY 행 복사를 특정숫자값 만큼(행 필터링없이) SELECT * FROM ( SELECT 10 AS COPY_ROW FROM DUAL ) A , TABLE(CAST(MULTISET(SELECT LEVEL FROM DUAL CONNECT BY LEVEL 2020. 6. 17.
오라클 문자열을 특정 delimiter로 split 하여 테이블처럼 반환 자바의 Split처럼 오라클에서도 문자열을 특정 delimiter로 데이터를 반환받을수있다 함수를 먼저 만들어놓고 CREATE OR REPLACE FUNCTION FN_SPLIT_TO_ROW ( P_LIST VARCHAR2, P_DEL VARCHAR2 := ',' ) RETURN TMP_SPLIT /* TYPE하나 만들어준다 */ PIPELINED IS L_IDX PLS_INTEGER; L_LIST VARCHAR2(32767) := P_LIST; L_VALUE VARCHAR2(32767); BEGIN LOOP L_IDX := INSTR(L_LIST, P_DEL); IF L_IDX > 0 THEN PIPE ROW(SUBSTR(L_LIST, 1, L_IDX-1)); L_LIST := SUBSTR(L_LIST.. 2020. 6. 17.
오라클 프로시저 synchronized (LOCK) 락 설정 오라클에서 프로시저에도 자바의 SYNCHRONIZED 처럼 락을 설정할수있다! DECLARE -- lock 처리 LOCKHANDLE VARCHAR2(128); RETCODE NUMBER; BEGIN DBMS_LOCK.ALLOCATE_UNIQUE('WaveOrderSelectionLock', LOCKHANDLE); RETCODE := DBMS_LOCK.REQUEST(LOCKHANDLE, TIMEOUT => 0, LOCKMODE => DBMS_LOCK.X_MODE); IF RETCODE 0 THEN O_ERR_CD := 'MSG_00289'; RAISE E_EXCEPTION; END IF; RETCODE := DBMS_LOCK.RELEASE(LOCKHANDLE); END; 2020. 6. 17.
오라클 CONNECT BY 갖고놀기 (FROM TO 사이 날짜전부 가져오기) #1 CONNECT BY 절을 응용하면 정말 다양한짓을 할수있다. 해당 기능들 사용할때 마다 기록을 해둘예정. 이번에는 FROM, TO 사이의 날짜를 전부가져오기 SELECT TO_CHAR((TO_DATE('20200601','YYYYMMDD')-1) + LEVEL,'YYYYMMDD') AS DAYS FROM DUAL CONNECT BY LEVEL 2020. 6. 11.