Oracle

PLSQL 동적 쿼리 만들어 실행하기.

은호아빠 2016. 2. 3. 09:12

1. 오라클 에서 PLSQL문 사용시 DB세팅값기준으로 정렬을 다시 해서 PLSQL 문이 실행되어야 할때가 있다. 

이럴때 이런식으로 해보자..

V_ORDERBY_CON :='';    

       FOR ORDERBY_LIST IN  (SELECT PRRY_RNKG_CD

                                  , PRRY_RNKG_NM

                                  , PRRY_RNKG

                                  , EXPL

                               FROM 테이블명

                              ORDER BY PRRY_RNKG) 

         LOOP 

             IF ORDERBY_LIST.PRRY_RNKG_CD = 'A'

             THEN

                V_ORDERBY_CON := V_ORDERBY_CON||', EX1.PPAY_DT ASC';

             ELSIF ORDERBY_LIST.PRRY_RNKG_CD = 'B'

             THEN

                V_ORDERBY_CON := V_ORDERBY_CON||', EX1.LNKG_CD1 ASC';

             END IF;         

         END LOOP;

V_ORDERBY_CON ->여기에 정렬순서에 대한 값을 넣어준다.. 

그리고. 실행전 완벽한 셀렉트문으로 만들어주고

 V_QUERY :='SELECT *

                 FROM 테이블명

                ORDER BY EX1.컬럼명 DESC,EX1.컬럼명 DESC

                         '||V_ORDERBY_CON||' --동적쿼리 위치해주고..

                       , EX1.컬럼명, EX1.컬럼명 DESC, EX1.컬럼명, EX1.컬럼명';

이렇게 만든 문장을 이걸로 실행

EXECUTE IMMEDIATE V_QUERY;

짠 끝. ㅋ.ㅋ