database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41052 게시물 읽기
No. 41052
pl/sql 여러 테이블에 여러 칼럼 지우고 싶습니다.
작성자
조윤상(jys923)
작성일
2016-01-18 14:45
조회수
8,624

프로시져로 만들면 될것 같은데 

 

지우는 프로시져(지울테이블이름1,2,3...);

 

이렇게 넣고 지워지게 하고 싶은데  잘 안되네요

 

지워지는 조건은 3달이전 데이타 입니다.

 

테이블명을 변수로 사용하는 방법과 

변수의 갯수를 받아오는게 문제입니다

변수갯수만큼 반복문을 돌리려고요

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

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;
/

마농(manon94)님이 2016-01-18 21:18에 작성한 댓글입니다.
이 댓글은 2016-01-18 21:19에 마지막으로 수정되었습니다.

 답변 감사합니다

완벽히 제가 생각하던 방식이네요.

그런데 EXECUTE IMMEDIATE는 실행 속도가 원래 느린가요?

직접 쿼리문 날리는것보다 많이 느려서요

조윤상(jys923)님이 2016-01-20 09:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41055쿼리좀 알려주세요... [1]
피어스
2016-01-20
8622
41054쿼리 도움이요..쉬운듯 한데 안되네요. [3]
gome
2016-01-20
8766
41053회의실 예약 DB Layout 문의 [2]
IT재벌
2016-01-18
8634
41052pl/sql 여러 테이블에 여러 칼럼 지우고 싶습니다. [2]
조윤상
2016-01-18
8624
41050조회 속도를 개선하고 싶습니다. [2]
선이
2016-01-14
9185
41049파라메터 설정(긴급문의) [1]
이현정
2016-01-12
8493
41048연속되는 문자, 숫자 구간 생성 문의 드립니다. [1]
OTL
2016-01-11
9103
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다