프로시져로 만들면 될것 같은데
지우는 프로시져(지울테이블이름1,2,3...);
이렇게 넣고 지워지게 하고 싶은데 잘 안되네요
지워지는 조건은 3달이전 데이타 입니다.
테이블명을 변수로 사용하는 방법과
변수의 갯수를 받아오는게 문제입니다
변수갯수만큼 반복문을 돌리려고요
DECLARE v_input VARCHAR2(200) := 'tab1,table2,t3'; v_tmp VARCHAR2(200) := v_input||','; v_tab VARCHAR2(200); v_sql VARCHAR2(200); v_con VARCHAR2(50) := ' WHERE dt < ADD_MONTHS(TRUNC(sysdate), -3)'; v_pos NUMBER; BEGIN LOOP v_pos := INSTR(v_tmp, ','); v_tab := SUBSTR(v_tmp, 1, v_pos - 1); v_tmp := SUBSTR(v_tmp, v_pos + 1); v_sql := 'DELETE FROM ' || v_tab || v_con; dbms_output.put_line(v_sql); -- EXECUTE IMMEDIATE v_sql; EXIT WHEN v_tmp IS NULL; END LOOP; END; /
답변 감사합니다
완벽히 제가 생각하던 방식이네요.
그런데 EXECUTE IMMEDIATE는 실행 속도가 원래 느린가요?
직접 쿼리문 날리는것보다 많이 느려서요