본문 바로가기

DATABASE18

[PROCEDURE] 독립적인 트랜잭션 설정 서론 Oracle에서 프로시저를 사용하다가 자꾸 예상하지 못한 부분에서 COMMIT/ROLLBACK 이 처리되었다. 확인해보니까 내부 로직에서 데이터를 적재한 후 로그 테이블에 로그를 쌓기위한 다른 프로시저를 호출하였는데, 그 프로시저에서 COMMIT/ROLLBACK을 실행하고 있었다. 이처럼 프로시저가 하나의 트랜잭션에서 여러 프로시저를 호출하여 사용하는 경우 문제가 발생할 수 있다. 따라서, 각 프로시저마다 독립적인 트랜잭션을 구성할 수 있도록 'PRAGMA AUTONOMOUS_TRANSACTION' 옵션을 적용해야한다. 간단한 예제를 통해 어떻게 적용되는지 알아보도록 하자. 1. 예제 1-1. 요약 1. 데이터를 적재하는 프로시저를 호출. 2. 프로시저가 테이블에 데이터를 INSERT하고 COMMI.. 2020. 7. 23.
[SPOOL] SQL 스크립트를 출력하는 스풀링 서론 Table이나 Procedure, Fuction 등 간혹 백업을 위해서 스크립트를 추출해야 하는 경우가 있는데, 이를 하나씩 조회하고 파일로 저장하다가 귀찮아서 Spool을 이용하여 동적으로 스크립트를 저장할 수 있는 쿼리를 만들어 보았다. 1. 동적 Script 추출 쿼리 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 /** 스크립트 실행 결과 출력 **/ SET FEEDBACK OFF /** 스크립트 검증 **/ SET VERIFY OFF /** 스크립트 명령 출력 **/.. 2020. 4. 24.
[DB2] 자주 사용하는 쿼리 정리 1. Dummy 테이블 - 현재 시간 출력 1 2 3 4 /* Dummy 테이블을 이용한 현재 시간 출력 */ SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS.FF4') AS NOW_DATE , TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF4') AS NOW_TIMESTAMP FROM SYSIBM.SYSDUMMY1 Colored by Color Scripter cs 2. WITH순환절 - 10일치 날짜 출력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* WITH순환절을 이용한 10일치 날짜 출력 */ WITH RECURSIVE_DATE ( NUM, DATE ) AS ( SELECT 1 AS NUM , T.. 2020. 4. 24.
[SQL] WITH문을 이용한 계층형쿼리 ( With. CONNECT BY절) 계층형 구조(Hierarchical Structure)는 부모와 자식 간의 관계를 깊이로 구분하여 표현하는 것으로 트리구조, 보통 카테고리를 분류나 조직도에 많이 사용된다. 개발자들이 흔히 사용하는 Visual Studio나 이클립스와 같은 IDE의 Project 탐색기, 폴더의 탐색기에도 사용된다. 일반적으로 RDBMS에서는 행(Row) 단위로 데이터가 조회되어 다른 행과의 관계를 나타내는 계층형 구조를 조회하기 힘들다. 하지만, WITH문을 이용하면 계층형 구조의 데이터를 조회할 수 있다. Oracle은 10g버전부터 CONNECT BY문 을 이용하여 계층형 쿼리를 만들 수 있고, 11g R2 버전부터 Recursive Subquery Factoring 기능이 추가되어 WITH문으로 재귀가 가능하게 .. 2020. 1. 23.