DB

[DB][Oracle] PL/SQL 블록을 사용하여 한번에 insert 하기

오선지♬ 2024. 7. 17. 18:31
728x90
반응형

 

SET @TNT = (SELECT TENANT_CD FROM SYS_COMPANY LIMIT 1);

MysQL 에선 변수를 세팅해서 한번에 Insert 문을 쓸 때 사용했는데,

Oracle에서 변수를 사용할 수 없기 때문에 직접 변수를 사용하는 방식(@TNT)을 사용할 수 없습니다.

대신, 변수를 사용할 필요가 있는 경우 PL/SQL 블록을 사용하거나 다른 방법으로 값을 전달해야 합니다.

DECLARE
    v_tenant VARCHAR2(20) := 'TENANT1';
BEGIN
    INSERT INTO SYS_CODE_CLS
    SELECT v_tenant, 'col1', 'col2', 1, 'col3', 1, NULL, NULL, 0, 1, 'col4', CURRENT_TIMESTAMP, 'col5', CURRENT_TIMESTAMP
    FROM DUAL
    UNION ALL
    SELECT v_tenant, 'col1', 'col2', 1, 'col3', 1, NULL, NULL, 0, 1, 'col4', CURRENT_TIMESTAMP, 'col5', CURRENT_TIMESTAMP
    FROM DUAL
    UNION ALL
    SELECT v_tenant, 'col1', 'col2', 1, 'col3', 1, NULL, NULL, 0, 0, 'col4', CURRENT_TIMESTAMP, 'col5', CURRENT_TIMESTAMP
    FROM DUAL
    UNION ALL
    SELECT v_tenant, 'col1', 'col2', 1, 'col3', 1, NULL, NULL, 0, 0, 'col4', CURRENT_TIMESTAMP, 'col5', CURRENT_TIMESTAMP
    FROM DUAL
    UNION ALL
    SELECT v_tenant, 'col1', 'col2', 1, 'col3', 1, NULL, NULL, 0, 0, 'col4', CURRENT_TIMESTAMP, 'col5', CURRENT_TIMESTAMP
    FROM DUAL;
END;
728x90
반응형