Oracle plsql 질문 드립니다. 0 5 1,075

by InsideCore [PL/SQL] [2018.01.17 11:14:08]


안녕하세요,

PL/SQL 생성 중 고수님들의 도움이 필요하여

몇자 적습니다.

 

제가 원하는 것은

첫번째 CURSOR의 ROW값을

칼럼처럼 인식이 가능한지 문의 드립니다.

 

DECLARE

CURSOR C1 IS
SELECT '서울' CITY , 100 VALUE_INFO
  FROM DUAL
UNION ALL
SELECT '인천' CITY , 150 VALUE_INFO
  FROM DUAL
UNION ALL
SELECT '대구' CITY , 130 VALUE_INFO
  FROM DUAL;
 
CURSOR C2 IS
SELECT '인구' GUBUN , 45000 "서울" , 8000 "인천" , 10000 "대구"
  FROM DUAL
UNION ALL
SELECT '남자' GUBUN , 150 "서울" , 1200 "인천" , 80 "대구"
  FROM DUAL
 
BEGIN

  FOR F1 IN C1
  LOOP
   
    FOR F2 IN C2
    LOOP
       IF C2.(C1.의 CITY값) > C1.VALUE_INFO THEN
         DBMS_OUTPUT.PUT_LINE('TEST = ' || C2.(C1.의 CITY값));
       END IF;

       -- 원하는 결과

       IF C2.서울 > C1.VALUE_INFO THEN

           -------

       END IFL
    END LOOP;
   
  END LOOP;

END;

by 우리집아찌 [2018.01.17 13:04:46]

원하시는 결과물을 올려주세요.

 

 


by InsideCore [2018.01.17 13:23:13]

 원하는 결과는 적어 두었습니다.


by 우리집아찌 [2018.01.17 13:47:19]

원하시는 결과가

 IF C2.서울 > C1.VALUE_INFO THEN  <= 이거이신가요?

저는 못풀겠습니다. 다른분께 패쓰..


by 마농 [2018.01.18 07:24:43]
IF (f1.city = '서울' AND f2.서울 > f1.value_info) OR
   (f1.city = '인천' AND f2.인천 > f1.value_info) OR
   (f1.city = '대구' AND f2.대구 > f1.value_info) THEN
   -----
END IF;

 


by 그로밋 [2018.01.18 14:18:47]

어떤 값을 컬럼이름으로 바꾸어 비교하는것보다, 컬럼이름을 값으로 바꾸어 비교하는 것이 쉬울 것입니다.

DECLARE

CURSOR C1 IS
  SELECT '서울' CITY , 100 VALUE_INFO
    FROM DUAL
  UNION ALL
  SELECT '인천' CITY , 150 VALUE_INFO
    FROM DUAL
  UNION ALL
  SELECT '대구' CITY , 130 VALUE_INFO
    FROM DUAL;
  
CURSOR C2 IS
  WITH TEMP AS (
    SELECT '인구' GUBUN , 45000 "서울" , 8000 "인천" , 10000 "대구"
      FROM DUAL
    UNION ALL
    SELECT '남자' GUBUN , 150 "서울" , 1200 "인천" , 80 "대구"
      FROM DUAL)
  SELECT *
    FROM TEMP
    UNPIVOT (VALUE_INFO FOR CITY IN ("서울", "인천", "대구"));   
  
 BEGIN

  FOR F1 IN C1 LOOP
    
     FOR F2 IN C2 LOOP
     
        -- IF C2.(C1.의 CITY값) > C1.VALUE_INFO THEN
        IF F2.CITY = F1.CITY AND F2.VALUE_INFO > F1.VALUE_INFO THEN
          -- DBMS_OUTPUT.PUT_LINE('TEST = ' || C2.(C1.의 CITY값));
          DBMS_OUTPUT.PUT_LINE(F2.CITY || ' ' || F2.GUBUN || ': ' || F2.VALUE_INFO || '> ' || F1.VALUE_INFO);
        END IF;

     END LOOP;
    
   END LOOP;

END;
/

 

 

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