728x90
2023.09.14 - [DB/ORACLE] - [ORACLE] 프로시저 안에 테이블명 변수 처리하기.
[ORACLE] 프로시저 안에 테이블명 변수 처리하기.
📍 ? ㅇㅇ 출처 : https://okky.kr/questions/447897 https://grandma-coding.tistory.com/entry/OracleREGEXPSUBSTR-%EC%BD%A4%EB%A7%88%EB%A1%9C-%EB%B6%84%EB%A6%AC%EB%90%9C-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%97%AC%EB%9F%AC-%ED%96%89%EC%9C%BC%EB%A1%9C-
gloria94682015.tistory.com
📍 EXECUTE IMMEDIATE K_QUERY INTO GET_SEQ;
📍 EXECUTE IMMEDIATE V_QUERY USING GET_SEQ;
CREATE OR REPLACE PROCEDURE SET_INSERT (STR_TB_NAME_1 IN VARCHAR2, STR_TB_NAME_2 IN VARCHAR2)
IS
K_QUERY VARCHAR2(1000);
V_QUERY VARCHAR2(5000);
GET_SEQ VARCHAR(20);
BEGIN
K_QUERY := q'$ SELECT TRIM(TO_CHAR(TEST_SEQ.nextval, '09999999999999999999')) FROM DUAL $';
BEGIN -- 단일 값을 리턴받을때 -- K_QUERY 실행해서 나오는 값을 GET_SEQ 에 넣음.
EXECUTE IMMEDIATE K_QUERY INTO GET_SEQ;
END;
DBMS_OUTPUT.PUT_LINE ('GET_SEQ : ' || GET_SEQ); -- // 00000000000000000152 이런 형태.
V_QUERY := q'$ INSERT ALL INTO $';
V_QUERY := V_QUERY || STR_TB_NAME_1;
V_QUERY := V_QUERY || q'$ (SEQ_NO, TEST_COL_1) VALUES (:GET_SEQ, TEST_COL_1) $'
|| q'$ INTO $';
V_QUERY := V_QUERY || STR_TB_NAME_2;
V_QUERY := V_QUERY || q'$ (SEQ_NO, TEST_COL_2) VALUES (:GET_SEQ, TEST_COL_2) $'
|| q'$ SELECT 'DATA_1' AS TEST_COL_1, 'DATA_2' AS TEST_COL_2 FROM DUAL $';
BEGIN -- INSERT, UPDATE, DELETE 구문 실행 -- GET_SEQ 를 써서 V_QUERY 실행.
EXECUTE IMMEDIATE V_QUERY USING GET_SEQ;
END;
COMMIT;
END;
출처 : http://gurubee.net/article/80689
https://itns3200.tistory.com/91
https://dingadinga.tistory.com/171
개발 공부를 위한 블로그 입니다.
오류가 있다면 댓글로 알려주세요!
감사합니다.

728x90
'DB > ORACLE' 카테고리의 다른 글
[ORACLE] 계층형 쿼리 이용 (html rowspan 기타등등 ) (0) | 2024.03.11 |
---|---|
[ORACLE] DB CONNECTION POOL 확인 (0) | 2023.10.25 |
[ORACLE] 프로시저 안에 테이블명 변수 처리하기. (0) | 2023.09.14 |
[ORACLE] 쉼표(,)로 되어 있는 값을 열로 바꾸기 (0) | 2023.09.14 |
[ORACLE] global temporary table (전역 임시 테이블) (0) | 2023.08.29 |