이중 FOR ** LOOP 문 질문입니다. 0 3 1,210

by 몽키매직 [PL/SQL] [2018.07.04 13:37:41]


cursor c1 is  select ****  c1 선언

for item in c1 loop

  cursor c2 is select item.a, item.b from dual;   c2 선언  --- 에러 부분

   for item_d in c2 loop

     /* 작업 */

    end loop

end loop

 

이렇게 작성은 안되나요?  된다고 보거나 들은것 같은데 

pls-00103 심볼 c2를 만났습니다. 다음중 하나가 기대될때...   이런 에러가 나오네요..

커서 선언 sql은 정상입니다. 따로 실행시켜봤는데 정상 결과가 나오구요

by 마농 [2018.07.04 14:26:55]

선언은 선언부(DECLARE ~ BEGIN 사이)에서만 가능합니다. 처리부(BEGIN ~ END) 에서는 불가능합니다.
1. 맨 위 선언부로 올리는 방법
2. 서브 블럭(DECLARE ~ BEGIN ~ END)을 만들어 선언하는 방법.


by 몽키매직 [2018.07.04 15:26:13]

BEGIN ~ END 사이에 DECLARE ~ BEGIN ~ END 를 또 선언할수 있는가요? 이걸 말씀하신 서브블럭 이라고 하는건가요?


by 마농 [2018.07.04 15:28:34]

PL/SQL 블럭은 DECLARE, BEGIN, EXCEPTION, END 로 구성되며
DECLARE, EXCEPTION 은 생략 가능하고, BEGIN, END 는 필수입니다.
PL/SQL 블럭은 다른 서브블럭을 포함할 수 있습니다.
단 서브블럭에서 선언된 변수는 서브블럭 내에서만 유효합니다.
서브블럭 밖 메인 블럭에서는 서브블럭에서 선언된 변수를 참조할 수 없습니다.

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