반응형
사이트를 다니다보면 가끔씩 컬럼에 SQL 문장 자체를 가지고 있는 경우가 있다.
Cursor로 행별 데이터를 받아 실행하는 로직을
익명 블록으로 구현함
/* 선언부 */
DECLARE
V_SQL VARCHAR2(4000);
--커서를 생성한다
--SELECT 결과값을 담는다.
CURSOR STR_SQL
IS
SELECT REPLACE(STR_SQL,';','')
FROM --INSERT SQL이 있는 테이블
INSERT_SQL;
/* 실행부 */
BEGIN
OPEN STR_SQL; --커서오픈
LOOP --루프 시작
FETCH STR_SQL INTO V_SQL; --루프를 돌면서 순차적으로 결과행을 V_SQL에 담는다.
EXIT WHEN STR_SQL%NOTFOUND; --커서에서 더이상 데이터가 없을 경우 루프를 빠져나간다.
EXECUTE IMMEDIATE (V_SQL); --문자열 SQL 실행
DBMS_OUTPUT.PUT_LINE('CNT :'||SQL%ROWCOUNT||' '||V_SQL);
COMMIT;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('COMPLETE');
CLOSE STR_SQL;
END;
반응형
'데이터베이스 > ORACLE' 카테고리의 다른 글
[ORACLE/오라클] 유저 생성과 권한 (0) | 2023.05.01 |
---|---|
[ORACLE/오라클] WINDOW 환경에서 SCOTT계정 생성 (0) | 2023.04.13 |
[ORACLE/오라클] 오라클 테이블 자동 DDL 생성 (테이블, PK, 인덱스) (0) | 2022.06.13 |
[ORACLE/오라클] 오라클 12 SCOTT 계정 활성화 (0) | 2021.09.18 |
[ORACLE/오라클] SQLPLUS 를 이용하여, SQL 파일 실행 (0) | 2021.09.10 |