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 40792 게시물 읽기
No. 40792
for문과 다이나믹쿼리 into문 조합 문의
작성자
삼만돌이
작성일
2015-05-08 13:02
조회수
7,162

받아오는 값에 따라서 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'' ';

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

결국 변수 최대수치 정해놓고 25개 만들어 놓으신거죠?
변수에 값을 담기만 하면 되는 거겠지요?
그렇다면 쿼리를 굳이 동적으로 해서 할 필요가 있을지?
다음 두가지 방법을 사용하시면 될 듯 한데요.
  1. 그냥 정적으로 25개 컬럼 다 만들어 사용하느 방법
    - 어차피 빈 컬럼은 널이 들어가게 되어 있음
  2. 피벗 기능을 사용하지 않는 방법
    - 그룹바이해서 MAX(DECODE 하지 말고
    - 그냥 있는 그대로 커서 형태로 조회해와서
    - 루프 돌려가면서 변수에 저장
    - 변수도 배열변수를 사용하면 더 좋을 듯

마농(manon94)님이 2015-05-11 11:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40796sql 질문하나 더 올립니다. ^^; [3]
이현정
2015-05-11
7388
40795쿼리문좀 봐주세요.. [1]
염정훈
2015-05-10
6620
40794100개의 데이터에서 전체평균의 70%의 값을 내는 함수가 있나요? [4]
유도윤
2015-05-09
7001
40792for문과 다이나믹쿼리 into문 조합 문의 [1]
삼만돌이
2015-05-08
7162
40791테이블스페이스 생성 관련 문의
오승환
2015-05-06
6588
40790페이징 관련 문의입니다. [3]
이현정
2015-05-04
6999
40789오라클 클라이언트 설치관련
카일
2015-05-01
6820
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다