오라클 PL/SQL 강좌#3 : 오라클 PL/SQL에서 동적 SQL(Dynamic SQL) 사용법 - 2
변수를 이용하여 SQL문장을 동적으로 만들어- 내는 경우
컴파일타임에 존재하지 않는 DB Object를 참조하는 경우
PL/SQL블록에서 다른 프로시저등을 호출하는 경우
7.1 Dynamic SQL 이란?
PL/SQL은 Binding이 Compile시에 일어나므로 Database Object의 Name이 Compile시에 고정되어야 하는 등의 제한이 있지만 Dynamic SQL을 사용한다면 SQL문을 변수에 정의하여 SQL문의 최종완성을 런타임중에 할 수 있다는 장점이 있다.
DBMS_SQL Package로 Dynamic SQL문의 사용을 가능하게 했는데 이는 Database Object의 Name을 Runtime에 줄 수 있을 뿐 아니라 DDL문장을 기술할 수도 있는 장점이 있다.
다음과 같은 경우 Dynamic SQL을 사용한다.
DDL을 사용하는 경우
변수를 이용하여 SQL문장을 동적으로 만들어 내는 경우(검색조건, 정렬조건, 힌트구문)
컴파일타임에 존재하지 않는 DB Object를 참조하는 경우(테이블의 이름을 동적으로 생성)
PL/SQL블록에서 다른 프로시저등을 호출하는 경우
7.1.1 동적 SQL을 이용하여 DDL을 실행
Dynamic SQL을 이용하면 CREATE, DROP, GRANT, REVOKE 등을 사용할 수 있다.
ALTER SESSION, SET 명령어등 SCL(Session Control Language)을 사용할 수 있다.
Dynamic SQL을 이용하면 SELECT절에 TABLE구를 사용할 수 있다.