DB / ORACLE
10편
- Oracle 프로시저·함수·뷰 소스를 테이블에 백업하기 (DBMS_METADATA)DBMS_METADATA.GET_DDL 로 내 스키마의 프로시저·함수·뷰·패키지 DDL 을 백업 테이블에 쌓아 두는 프로시저와, 실수하기 쉬운 커밋·예외 처리·패키지 타입 이름을 정리했다.
- Oracle 백업 테이블을 한 번에 만드는 DDL 생성 SQL (데이터·PK·코멘트)여러 테이블을 Z_BACKUP_ 테이블로 복사할 때 CTAS 가 빠뜨리는 PK·코멘트까지 DDL 로 만들어 주는 SQL. 작은따옴표가 든 코멘트, 시스템 이름 PK 같은 함정도 함께 정리했다.
- Oracle SELECT 로 출력물 다단(왼쪽·오른쪽 2단) 만들기한 페이지에 20건을 왼쪽 10건, 오른쪽 10건으로 나눠 찍는 다단 출력물용 SELECT. 행 번호로 페이지·줄·단을 계산하는 공식과 실제 테이블에 쓰는 방법을 정리했다.
- 테이블 정보로 MyBatis CRUD SQL 자동 생성하기 (Oracle 딕셔너리 활용)USER_TAB_COLUMNS·PK·코멘트를 읽어 MyBatis 매퍼에 붙여 넣을 SELECT·INSERT·UPDATE·DELETE 문을 만들어 주는 Oracle SQL. 감사 컬럼 처리와 jdbcType 까지 넣었다.
- 삭제 전에 다른 테이블에서 쓰는 코드인지 확인하는 Oracle 함수FK 가 걸려 있지 않은 테이블 사이에서, 지우려는 코드 값을 다른 테이블이 쓰고 있는지 딕셔너리로 찾아 확인하는 PL/SQL 함수. 바인드 변수로 SQL 인젝션을 막고, FK 와의 차이도 정리했다.
- Oracle 함수로 글자 사이에 공백을 넣어 균등 분할(균등 정렬)하기출력물 도구가 균등 분할을 지원하지 않을 때, 글자 사이에 공백을 고르게 넣어 정해진 폭에 맞추는 PL/SQL 함수. 공백 개수 계산 오류와 한글 폭 문제를 바로잡았다.
- Oracle 가상 열(Virtual Column)로 조합 컬럼 만들기두 컬럼을 이어 붙인 "이름(대표자)" 같은 값을 매번 SQL 로 만들지 않고 가상 열로 정의하는 방법. NULL 처리, INSERT·UPDATE 제약, 인덱스까지.
- Oracle BETWEEN 으로 기간끼리 겹치는 데이터를 찾을 때 빠지는 함정데이터도 FROM~TO, 조회 조건도 FROM~TO 일 때 BETWEEN 두 번으로는 빠지는 행이 생긴다. 겹침 조건 두 줄로 끝내는 방법과 DATE·TIMESTAMP 에서 BETWEEN 을 쓸 때 주의할 점.
- Oracle 에서 구분자 문자열을 행으로 나누기 — 테이블 함수와 SQL 만으로 하는 방법쉼표로 이은 문자열(1교시,2교시,3교시)을 행으로 바꾸는 방법. 파이프라인 테이블 함수, CONNECT BY + REGEXP_SUBSTR, JSON_TABLE, SQL 매크로를 비교하고 빈 값이 사라지는 흔한 버그를 바로잡는다.
- Oracle JSON_TABLE 예제 — JSON 배열을 행과 열로 풀기화면에서 넘어온 JSON 배열을 JSON_TABLE 로 표처럼 조회하는 예제. 기본 문법, 18c 부터 되는 짧은 열 정의와 대소문자 함정, 중첩 배열(NESTED PATH)까지.