안녕하세요,
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;
어떤 값을 컬럼이름으로 바꾸어 비교하는것보다, 컬럼이름을 값으로 바꾸어 비교하는 것이 쉬울 것입니다.
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; /