'동적 SQL'에 해당되는 글 1건
- 2017.01.24 :: 오라클의 동적 PL SQL 작성 - EXECUTE IMMEDIATE
데이터베이스
2017. 1. 24. 02:11
PL SQL 작성 시 동적으로 DDL구문 또는 SELECT/INSERT/UPDATE/DELETE 구문을 수행해야 할 때가 있다.
이때 유용하게 사용하는 것이 EXECUTE IMMEDIATE 문법이다.
SCOTT 계정의 테이블들의 건수를 TBL_CNT_LIST라는 테이블에 INSERT하는 예시로 EXECUTE IMMEDIATE 구문을 이해해보자!
1. SCOTT 계정으로 생성된 테이블들의 레코드 건수 정보를 INSERT할 TBL_CNT_LIST 테이블 생성
1 2 3 4 | CREATE TABLE TBL_CNT_LIST( TBL_NM VARCHAR2(30), CNT NUMBER(10) ); | cs |
2. SCOTT계정의 테이블 목록으로 동적쿼리를 생성
- 예시가 심플하여 PL SQL에 짧지만 DDL 및 DML 구문을 활용하여 복잡한 업무를 처리할 수 있다.
- 필요하다면 위의 TBL_CNT_LIST 테이블도 PL SQL 구문안에서 처리할 수 도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | DECLARE BEGIN -- 테이블 건수 정보 테이블의 데이터 삭제 DELETE FROM TBL_CNT_LIST; FOR X IN ( -- SCOTT 계정의 테이블 목록을 활용하여 INSERT 구문을 동적으로 생성한다. SELECT 'INSERT INTO TBL_CNT_LIST SELECT ' || CHR(39) || T.TABLE_NAME || CHR(39) || ' AS TBL_NM, COUNT(*) AS CNT FROM ' || T.TABLE_NAME AS INS_SQL FROM USER_TABLES T WHERE 1=1 ) LOOP -- EXECUTE IMMEDIATE 구문을 사용하여 INSERT 구문 수행 EXECUTE IMMEDIATE X.INS_SQL; END LOOP; COMMIT; END; / | cs |
3. 결과 보기
'데이터베이스' 카테고리의 다른 글
오라클 권한 조회 (0) | 2017.06.28 |
---|---|
오라클 계정과 권한 (0) | 2017.06.23 |
오라클 TABLESPACE와 DATAFILE (0) | 2017.06.16 |
TIMESTAMP 연산 (0) | 2017.05.11 |
오라클 - PIVOT과 UNPIVOT (0) | 2017.02.02 |