시스템을 운영하다보니
업무 특성상
많은 데이터를 UNION ALL 을 사용해서
데이터를 처리해야 하는 상황이 생겼습니다.
구글링을 좀 해봐도 답이 보이질 않아서 그런데요. ^^
UNION ALL로 쿼리를 만들때
몇개까지 가능한지 아시는 분 있나요?
참고로
웹 기반의ui에서 실행 하고
컬럼 10개 정도에(최대 약6000byte)
약 2만개 정도 넣을수도 있습니다
답변 주신 글로발 템프 테이블
ui에서 사용하기도 하는지요?
막 자바기반에서 테스트 했더니
힙에러 나버리네요 ㅋㅋ
ex)
SELELCT '1' AS A, '2' AS B FROM DUAL UION ALL
SELELCT '5' AS A, '7' AS B FROM DUAL UION ALL
SELELCT '6 'AS A, '3 'AS B FROM DUAL UION ALL
SELELCT '7 'AS A, '6 'AS B FROM DUAL UION ALL
.
.
.
1000 개
아! 1000 개는 IN 절의 개수 제한이네요.
몇개나 union all 하시는지는 모르지만 무한대에 가까울경우는 차라리
global temporary table 을 를 사용해보시는게 좋지 않을까요?
-- Created on 2018-10-09 by PRIKEY
DECLARE
-- Local variables here
i INTEGER;
TYPE orgcurtype IS REF CURSOR;
mfg_cv orgcurtype;
v_clob CLOB;
BEGIN
FOR i IN 1 .. 6987 LOOP
v_clob := v_clob || 'union all select 2 from dual ';
END LOOP;
dbms_output.put_line(1);
v_clob := substr(v_clob,10);
OPEN mfg_cv FOR v_clob;
dbms_output.put_line(2);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END;
6988 번째에서 통신이 끊기더라고요. 거의 6987 번 정도 사용가능하지 않을까 싶네요.