PLSQL 동적SQL, Dynamic SQL, Execute Immediate, DBMS_SQL, 오라클교육, SQL교육, 자바교육, 오라클학원, SQL학원, 자바학원

https://www.youtube.com/watch?v=x6gW4inKtZg&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=32

https://www.youtube.com/watch?v=RE79vqW_s6o&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=31

오라클 PL/SQL
Dynamic SQL
- execute immediate를 이용하여 프로시저 호출
강의 : 이종철
동적SQL(Dynamic SQL)이 필요한 이유?
DDL(데이터베이스 정의 언어) 문을 실행해야 하는 프로그램을 작성할 때, 변수를 이용하여 SQL문장을 동적으로 만들어 낼때, 컴파일타임에 존재하지 않는 DB Object를 참조하는 경우(테이블의 이름을 동적으로 생성), PL/SQL블록에서 다른 프로시저등을 호출하는 경우에 사용합니다.
PL/SQL은 Binding이 Compile시에 일어나므로 테이블 이름등이 컴파일 시점에 확인되어야 하는 등의 제한이 있지만 Dynamic SQL을 사용한다면, SQL문을 변수에 정의하여 SQL문의 최종완성을 동적으로 런타임중에 할 수 있다는 장점이 있습니다.
오라클은 Dynamic SQL을 지원하기 위한 2가지 방법을 제공하는데, 첫째는 PL/SQL에서 PL/SQL의 기본 기능으로서 Execute Immediate를 통해 지원하며, 둘째는 DBMS_SQL에서 Dynamic SQL을 위한 API를 제공 합니다.
이번 강좌에서는 Execute Immediate를 이용하여 Dynamic SQL을 작성하는 방법에 대해 살펴보겠습니다.
[실습 : PL/SQL블록, BEGIN ~ END 사이에서 프로시저 호출 실습]
select * from emp; create or replace procedure creatEmp ( empno in out emp.empno%type, ename in emp.ename%type, sal in emp.sal%type ) as begin select max(empno) + 1 into empno from emp; insert into emp (empno, ename, sal) values (empno, ename, sal); commit; end; / declare sql_text varchar2(500); new_empno emp.empno%type; new_ename emp.ename%type := '홍길동'; new_sal emp.sal%type := 999; begin -- Dynamic SQL을 이용하여 프로시저를 호출합니다. sql_text := 'BEGIN creatEmp(:a, :b, :c); END;'; execute immediate sql_text using in out new_empno, new_ename, new_sal; dbms_output.put_line('inserted empno : ' || new_empno); end; |
#PLSQL, #동적SQL, #DynamicSQL, #ExecuteImmediate, #DBMS_SQL, #오라클교육, #SQL교육, #자바교육, #오라클학원, #SQL학원, #자바학원, PLSQL, 동적SQL, DynamicSQL, ExecuteImmediate, DBMS_SQL, 오라클교육, SQL교육, 자바교육, 오라클학원, SQL학원, 자바학원