익명블럭구조를 중첩 포문처럼 사용할 수 있다.
DECLARE
... -- 변수 A
BEGIN
... -- 실행내용 (변수 A 사용가능)
DECALRE
... -- 변수 B
BEGIN
... -- 실행 내용(변수 A,B 사용가능)
END;
... -- 실행내용 (변수 A 사용가능)
END;
/
각 익명블록구조 별로 레이블처리를 하면 필요한 변수를 직접 지정하여 사용할 수 있다.
<<>>를 사용해 레이블을 지정할 수 있고 지정한 레이블의 이름을 통해 해당 레이블에서의 정보를 직접 가져올 수 있다.
단, 변수의 범위에 대해 주의하여 사용해야 한다.
<<a>>
DECLARE
v_name varchar2(30);
v_name := a;
BEGIN
dbms_output.put_line(v_name); -- a
<<b>
DECLARE
v_name varchar2(30);
v_name := b;
BEGIN
dbms_output.put_line(v_name); -- b
dbms_output.put_line(a.v_name); -- a
END;
dbms_output.put_line(v_name); -- a
dbms_output.put_line(b.v_name); -- error
END;
/