CREATE OR REPLACE PROCEDURE p_test IS CURSOR c_1 IS SELECT * FROM test WHERE col3 = '소유' AND col4 IS NULL ; r_1 c_1%ROWTYPE; r_r2 VARCHAR2(100); l_cnt NUMBER(3); BEGIN OPEN c_1; LOOP FETCH c_1 into r_1; EXIT WHEN c_1%NOTFOUND; SELECT COUNT(*) INTO l_cnt FROM test2 WHERE col1 = r_1.col1 ; CONTINUE WHEN l_cnt>1; IF l_cnt = 1 THEN SELECT * INTO r_2 FROM test2 WHERE col1 = r_1.col1 ; END IF; update temp5 set col5= r_2.col5 where id = r_1.id; END LOOP; CLOSE c_1; END;
저번에 마농님의 도움으로 완성한 쿼리에서 반복되는 데이터가 많다고 하셔서 확인해보니 실제로 데이터가 중복이 많이 일어났었습니다..이에대한 해결방안으로 루프 시작하는 부분에서 변수를 초기화하라고 하시는데 이게 무슨말인지 모르겠습니다..
지금은 문법 오류 같은게 아니라 논리적인 오류이므로 원인을 파악해야 합니다.
이유를 모른 채 남이 알려주는 것 가지고 해결 할 수 없을 것 같습니다.
막연하게 질문하셔서 막연하게 답변 드릴 수박에 없지만.
그나마 구체적으로 구현까지 해드리긴 했지만..
막연한 표현을 코드로 구현하느라 실제와 다를 것으로 예상은 했습니다.
데이터를 직접 보고 요구사항을 직접 확인할 수 있는 스스로 해결하셔야 합니다.
여기서 도움을 얻으려면 막연한 표현 말고, 좀 더 구체적으로 질문하셔야 합니다.
문법 오류 정도는 잡아 줄 수 있지만.
논리적인 오류는 해당 상황을 구체적으로 파악해야만 잡을 수 있습니다.