pl/sql loop 변수 질문 0 5 1,177

by 오라클초보자 [PL/SQL] loof procedure pl/sql [2020.03.06 17:12:06]


프로시저를 이용하여 데이터를 정리해봤는데 정리한 데이터에 소수점도 표시가 안되고 반복되는 데이터도 많았습니다..

이러한 문제가 루프 시작부분에서 변수를 초기화 해주지 않아서라고 하는데 검색해도 안나오고 무슨말인지를 모르겠습니다..

선배님들의 조언을 구해도 될까요?ㅠㅠ

by 마농 [2020.03.09 07:59:46]

뭔가를 보여주셔야 조언을 하죠.


by 오라클초보자 [2020.03.09 12:39:43]
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;

저번에 마농님의 도움으로 완성한 쿼리에서 반복되는 데이터가 많다고 하셔서 확인해보니 실제로 데이터가 중복이 많이 일어났었습니다..이에대한 해결방안으로 루프 시작하는 부분에서 변수를 초기화하라고 하시는데 이게 무슨말인지 모르겠습니다..


by 마농 [2020.03.09 13:09:34]

지금은 문법 오류 같은게 아니라 논리적인 오류이므로 원인을 파악해야 합니다.
이유를 모른 채 남이 알려주는 것 가지고 해결 할 수 없을 것 같습니다.
막연하게 질문하셔서 막연하게 답변 드릴 수박에 없지만.
그나마 구체적으로 구현까지 해드리긴 했지만..
막연한 표현을 코드로 구현하느라 실제와 다를 것으로 예상은 했습니다.
데이터를 직접 보고 요구사항을 직접 확인할 수 있는 스스로 해결하셔야 합니다.
여기서 도움을 얻으려면 막연한 표현 말고, 좀 더 구체적으로 질문하셔야 합니다.
문법 오류 정도는 잡아 줄 수 있지만.
논리적인 오류는 해당 상황을 구체적으로 파악해야만 잡을 수 있습니다.


by 마농 [2020.03.09 13:37:01]

다시 보니 문법 오류도 보이네요.
선언된 r_r2 는 사용되지 않고 있구요.
선언되지 않은 r_2 가 사용되고 있네요.
잘 돌아간다고 하니 올려주신 소스와 실제 소스가 다르다는 거네요.
질문을 할 때 실제와 다르게 왜곡하여 질문하지 마세요.
너무 막연하게 질문 -> 구체적 질문
왜곡된 정보로 질문 -> 정확한 정보


by 오라클초보자 [2020.03.09 15:07:11]

넵 나머지는 제가한번 천천히 파악해보도록 하겠습니다.감사합니다!

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