레이블이 DynamicSQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DynamicSQL인 게시물을 표시합니다. 모든 게시물 표시

2022년 1월 1일 토요일

PLSQL, 동적SQL, Dynamic SQL, 커서OPEN FO에서 Dynamaic SQL사용하기, 참조커서, 오라클교육, SQL교육, 자바교육, SQL학원, 오라클학원, 자바학원

 

PLSQL, 동적SQL, Dynamic SQL, 커서OPEN FO에서 Dynamaic SQL사용하기, 참조커서, 오라클교육, SQL교육, 자바교육, SQL학원, 오라클학원, 자바학원


https://www.youtube.com/watch?v=upkNZLX6CV4&list=PLxU-iZCqT52CE6piTNJMXGGUvDvKw46_T&index=12 



https://www.youtube.com/watch?v=8hc030THr8w&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=16 

https://youtu.be/OCv-7nsq1w0



Native Dynamic SQL

OPEN FOR, FETCH, CLOSE 



강의 : 이종철






동적SQL(Dynamic SQL)이 필요한 이유?


DDL(데이터베이스 정의 언어) 문을 실행해야 하는 프로그램을 작성할 때, 변수를 이용하여 SQL문장을 동적으로 만들어 낼때, 컴파일타임에 존재하지 않는 DB Object를 참조하는 경우(테이블의 이름을 동적으로 생성), PL/SQL블록에서 다른 프로시저등을 호출하는 경우에 사용합니다.


이번 강좌에서는 Dynamic SQL 문이 여러 행을 반환하는 SELECT 문을 나타내는 경우를 실습하는데  다음과 같이 Native  Dynamic SQL로 처리할 수 있습니다.


OPEN FOR문을 사용하여 커서 변수를 Dynamic SQL문과 연결하는데, OPEN FOR 문의 USING 절에서 동적 SQL 문의 각 자리 표시자(:)에 대한 바인드 변수를 지정합니다.


이번 강좌에서는 Native Dynamic SQL의 형태로 커서를 사용하면서 동적 SQL문을 작성해 보겠습니다.


DECLARE
  -- 참조커서 타입 정의
  TYPE EmpCurTyp  IS REF CURSOR;
  v_emp_cur       EmpCurTyp;
  v_emp_record    emp%ROWTYPE;
  v_sql_text      VARCHAR2(200);
  v_deptno        emp.deptno%TYPE;
BEGIN
  -- 자리표시자와 함께  Dynamic SQL 구문을 작성 합니다.
  v_sql_text := 'SELECT * FROM EMP WHERE DEPTNO = :1';

  -- 커서를 오픈하고 USING구에서 :1 바인드 변수 값을 지정 합니다.
  OPEN v_emp_cur FOR v_sql_text USING 20;

  -- 커서에서 한건씩 레코드를 FETCH 합니다.
  LOOP
    FETCH v_emp_cur INTO v_emp_record;
    EXIT WHEN v_emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('EMPNO : ' || v_emp_record.empno || ',' || 'ENAME : ' || v_emp_record.ename);
  END LOOP;

  -- Close cursor:
  CLOSE v_emp_cur;
END;
/



#PLSQL, #동적SQL, #DynamicSQL, #커서, #SQL, #참조커서, #오라클교육, #SQL교육, #자바교육, #SQL학원, #오라클학원, #자바학원, PLSQL, 동적SQL, DynamicSQL, 커서, SQL, 참조커서, 오라클교육, SQL교육, 자바교육, SQL학원, 오라클학원, 자바학원

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

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




https://youtu.be/Qf5u2u9Gt2Q




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학원, 자바학원














 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...