가끔 컬럼의 내용이 지정되지 않고 동적으로 여러개 생성되게 해야 할 경우가 있습니다.보통 오라클에서 이런 경우면 프로그램 단에서 쿼리를 작성해서 실행하는데...
패키지를 이용한 프로시저 쿼리를 사용할때 프로시저 내에서 동적으로 작성해주는 방법이 있습니다.
아래에 예를 적어봅니다...
그럼...
Procedure SYS_SELECT( 파라메터_1, 파라메터_2,
out_cursor OUT PG_STATISTICS.refcur)
IS
CURSOR CUR IS
Select SY_ID from Sy_Info; --CUR 커서에 조회내용 담기
STR VARCHAR2(4000);
BEGIN
STR := ' Select ';
FOR REC IN CUR LOOP --CUR 커서에 담긴 내용에 따라 루프돌리며 실행
BEGIN
STR := STR || ' 동적컬럼생성 as ' || REC.컬럼명 || ',';
--CUR 커서의 컬럼은 REC.컬럼명 으로 사용
exception when dup_val_on_index then --예외처리
null;
END;
--commit; --Insert, Update, Delete 사용시
END LOOP;
STR := STR || ' from 테이블 ';
STR := STR || ' where 조건 = :파라메터_1 ' ;
STR := STR || ' and 조건 = :파라메터_2 ' ;
OPEN OUT_CURSOR FOR STR; -- USING 파라메터_1, 파라메터_2 ;
--STR에 담긴 쿼리내용 실행, USING 으로 :로 지정된 파라메터와 대응되는 파라메터 추가
출처 : http://blog.naver.com/crossbow71/60033090258 뽀우님의 블로그
출처 오라클 동적쿼리 - 패키지바디 프로시저에서 생성|작성자 견우