받아오는 값에 따라서 into문의 수를 조절하고 싶은데요 방법이 없을까요..
찾아봐도 해답이 잘 안나오네요.
하단이 현재 만든 쿼리인데요, v_count수에 따라 select절을 조절은 했는데.. 문제는 into문의 변수가 문제네요..
갯수가 다르면 에러를 발생하니.. ㅠㅠ 어떻게 해결법이 없을까요..
oracle 버전은 10g입니다.
V_COUNT := TO_NUMBER(P_COUNT);
V_SQL := 'select ';
FOR i IN 1..V_COUNT LOOP
IF i = V_COUNT THEN
V_SQL := ' max(decode(seq, ' || i || ',layer_column_eng)) aa' || i || '';
ELSE
V_SQL := ' max(decode(seq, ' || i || ',layer_column_eng)) aa' || i || ',';
END IF;
END LOOP;
V_SQL := V_SQL || ' from ( select rownum seq, layer_column_eng from CUSTOM_CONTROL_LOCAL where LAYER_NM = ''' || P_LAYERNM || ''')' ;
//이부분이 동적으로 변경되야 할 것 같은데 어떻게 방법이 없을까요?
execute immediate V_SQL into V_COLUMN1, V_COLUMN2, V_COLUMN3, V_COLUMN4, V_COLUMN5, V_COLUMN6, V_COLUMN7
, V_COLUMN7, V_COLUMN8, V_COLUMN9, V_COLUMN10, V_COLUMN11, V_COLUMN12, V_COLUMN13, V_COLUMN14, V_COLUMN15, V_COLUMN16
, V_COLUMN17, V_COLUMN18, V_COLUMN19, V_COLUMN20, V_COLUMN21, V_COLUMN22, V_COLUMN23, V_COLUMN24, V_COLUMN25;
//이부분은 위에 부분이 해결되면 위에 for문처럼 수정할 예정입니다.
V_MAIN_SQL := ' select ';
V_MAIN_SQL := V_MAIN_SQL || V_COLUMN1 || ',' || V_COLUMN2 || ',' || V_COLUMN3 ;
V_MAIN_SQL := V_MAIN_SQL || ' from ' || P_LAYERNM || '';
V_MAIN_SQL := V_MAIN_SQL || ' where keys = '14110'' ';
|