by McKee [SQL Query] [2024.08.14 08:25:33]
안녕하세요. 오랜만에 질문드립니다.
아래와 같이 테이블을 랜덤으로 생성한다음에
tempTableName 에 변수로 담은 다음 이것을 정적 쿼리에서 사용할 수 있을까요?
요지는 이테이블에 데이터를 담은 다음에 정적쿼리에서 사용하려고 합니다.
select 'TEMP_' || dbms_random.string('X', 10) into tempTableName from dual;
--DELETE TMP_SUMASSYLIST;
l_companyid := p_companyid;
open tempCur;
fetch tempCur into v_temp;
if tempCur%notfound then
v_sql := 'create table ' || tempTableName
||'( '
||' AAA varchar2(10) not null,'
||' BBB varchar2(8) not null,'
||' CCC varchar2(3) not null,'
||' DDD varchar2(3) null,'
||' EEE varchar2(3) null,'
||' FFF varchar2(3) null,'
||' GGG varchar2(3) not null,'
||' HHH date null,'
||' III date null,'
||' KJJ date null,'
||' ZZZ date null,'
||' ZZZZ number null,'
||' ZZZZ VARCHAR2(1)'
||') ';
execute immediate v_sql;
end if;
최종적으로 아래 sql 을 돌리려고 할때 저 TMP_ASSY 대신 위에서 생성한 tempTableName 을 사용하고 싶은데 방법이 없을까요?
아래는 간단하게 적었지만 쿼리길이가 제법되서 이정도로만 올림니다.
SELECT * FROM MA_DDD WHERE (CCC, DDD, EEE) IN (SELECT DISTINCT CCC, DDD, EEE FROM TMP_ASSY <-- 요 TMP_ASSY 대신 위에서 생성한 테이블을 사용하고 싶습니다.
고정 이름으로 임시테이블을 만드세요.
임시테이블은 본인 세션에서 입력한 자료만 보이고 사용이 끝나면 자료는 사라집니다.
gurubee.net/lecture/4039