PL SQL

PL/SQL 개관 - 2 (중첩 블록 및 PL/SQL에서 사용 가능한 SQL)

n.han 2016. 7. 7. 17:11

- 중첩 블록

 

   1) 내용 : BEGIN END는 중첩적으로 사용할 수 있다. 다만, 위에서 아래의 방향으로 순서대로 진행하면서 데이터 영역을 확보하기 때문에 변수의 사용 가능 유무를 잘 생각해야 한다. 또한 내부 블록에서는 외부 블록의 변수를 사용할 수 있으나, 반대의 경우는 그럴 수 없다. 그리고 지정자가 중복되는 경우 Outer의 레이블을 달아서 Ambiguous Call을 해결할 수 있다

 

BEGIN
  <<OUTER>>
  DECLARE
    v_father_name   VARCHAR2(20):='Patrick';
    v_date_of_birth DATE        := TO_DATE('1972/04/20','YYYY/MM/DD') ;
  BEGIN
    DECLARE
      v_child_name    VARCHAR2(20):='Mike';
      v_date_of_birth DATE        := TO_DATE('2002/12/12','YYYY/MM/DD') ;
    BEGIN
      DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name);
      DBMS_OUTPUT.PUT_LINE('Date of Birth: '||outer.v_date_of_birth);
      DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name);
      DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);
    END;
  END;
END OUTER;
/

Father's Name: Patrick
Date of Birth: 1972/04/20
Child's Name: Mike
Date of Birth: 2002/12/12
PL/SQL procedure successfully completed.

 

- PL/SQL에서 사용 가능한 SQL

   1) Query, DML, TCL은 사용 가능하다.

   2) DDL (CREATE, DROP, ALTER, TRUNCATE …), DCL (GRANT, REVOKE) 명령어는 동적 SQL을 이용할 때만 사용 가능하다.