조건에따른 쿼리 질문드립니다 0 1 844

by 초보개발자민짱 [PL/SQL] [2015.11.12 10:59:18]


    DECLARE
        LC_CNT                      NUMBER(1);
BEGIN
    LC_CNT := 0;
    SELECT COUNT(*)           //현재조회한쿼리에 데이터값이 0인지 1인지 구별하기위해
    INTO LC_CNT
              FROM SY_ILJEONG_M A
        INNER JOIN SY_MENU_M B
                ON A.ILJEONG_CD = B.ILJEONG_CD_1
               AND A.EOPMU_GBCD = B.EOPMUGBCD
               AND A.EOPMU_GBCD_SEBU = B.SEBU_EOPMU_GBCD
               AND B.PGM_ID =  'SAHJ0301_M'
             WHERE EOPMU_GBCD = '0031'
               AND EOPMU_GBCD_SEBU = '0201'
              ;
    IF LC_CNT > 0 THEN
SELECT
                  JEOKYONG_YEAR AS DATA
                 ,JEOKYONG_YEAR AS LABEL
              FROM SY_ILJEONG_M A
        INNER JOIN SY_MENU_M B
                ON A.ILJEONG_CD = B.ILJEONG_CD_1
               AND A.EOPMU_GBCD = B.EOPMUGBCD
               AND A.EOPMU_GBCD_SEBU = B.SEBU_EOPMU_GBCD
               AND NVL(B.PGM_ID,'%') LIKE 'SAHJ0301_M'
             WHERE EOPMU_GBCD = '0031'
               AND EOPMU_GBCD_SEBU = '0201'
               ;
ELSE             
SELECT
                   GIJUN_YEAR AS DATA
                 , GIJUN_YEAR AS LABEL
              FROM SY_GIJUNDT_M
             WHERE EOPMU_GBCD = '0031'
               AND EOPMU_GBCD_SEBU = '0201'
               ;
     END IF;
END;                          
               
 
 
현재 최초에 COUNT를 조회하여 0인지 1인지 구별하여
 
 
조건에 맞게 SELECT문 두개를 제어하고 싶습니다 1이면 중간쿼리를 태우고 0이면 맨밑에 쿼리를 태워버리고 싶은데
 
 
DECLARE 문은 INSERT UPDATE 밖에 안돼나요 ? 저값을 조회한다해도 FSP로 받아오지를 못할것같은데
 
 
다른 좋은방법이 없는지 선배님들 궁금합니다 

 

by 마농 [2015.11.12 15:43:11]

PL/SQL 에서 SELECT 문은 INTO 절과 함께 사용할때만 쓸 수 있습니다.
오직 1건 조회시만 사용되구요.
여러건을 조회할 때는 커서 형태로 사용해야 합니다.
조건에 따라 SQL 을 다르게 하고자 할 때는 동적쿼리를 사용해야 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입