PL/SQL 프로시저 복사의 예

다음 예는 이종 데이터베이스 간에 PL/SQL 프로시저를 복사할 때 생성되는 DDL을 보여줍니다.

생성된 DDL은 데이터베이스 오브젝트 붙여넣기 마법사의 DDL 미리보기 페이지에 표시됩니다.

표 1은 Oracle Database 11g 소스 데이터베이스에서 Linux®, UNIX® 및 Windows®용 DB2® 버전 9.7 목표 데이터베이스로 PL/SQL 프로시저를 복사하는 경우 생성되는 DDL의 예를 보여줍니다.

표 1. Oracle Database 11g에서 Linux, UNIX 및 Windows용 DB2 버전 9.7 데이터베이스로 PL/SQL 프로시저를 복사하는 예
Oracle Database 11g PL/SQL 프로시저 정의 DB2 버전 9.7 데이터베이스에 대해 생성된 DDL
CREATE OR REPLACE PROCEDURE scott.sample_proc1
AUTHID DEFINER
ASBEGIN
   INSERT INTO detail_proc_insert
      VALUES(1,'hello');
END;
/
CREATE PROCEDURE scott.sample_proc1
AUTHID DEFINER
ASBEGIN
   INSERT INTO detail_proc_insert
      VALUES(1,'hello');
END scott.sample_proc1;
CREATE OR REPLACE PROCEDURE scott.sample_proc2
AUTHID DEFINER
AS   x   NUMBER(9,2);
BEGIN
   x := 65400;
END;
/
CREATE PROCEDURE scott.sample_proc2
AUTHID DEFINER
AS   x   NUMBER(9,2);
BEGIN
   x := 65400;
END scott.sample_proc2;
CREATE OR REPLACE PROCEDURE scott.sample_proc3
IS
   detected EXCEPTION;
   PRAGMA EXCEPTION_INIT(detected, -60);
BEGIN
   null; -- some comment
EXCEPTION
   WHEN deadlock_detected THEN
      null; -- handling error
END;
/
CREATE PROCEDURE scott.sample_proc3
IS
   detected EXCEPTION;
   PRAGMA EXCEPTION_INIT(detected, -60);
BEGIN
   null; -- some comment
EXCEPTION
   WHEN deadlock_detected THEN
      null; -- handling error
END scott.sample_proc3;
CREATE OR REPLACE PROCEDURE scott.sample_proc4
IS
   num_tables NUMBER;
BEGIN
   SELECT COUNT(*)
   INTO num_tables
   FROM dual;
   IF num_tables < 1000 THEN
      raise_application_error(-20101,
                     'Issuing message');
   ELSE
      NULL; -- comment
   END IF;
END;
/
CREATE PROCEDURE scott.sample_proc4
IS
   num_tables NUMBER;
BEGIN
   SELECT COUNT(*)
   INTO num_tables
   FROM dual;
   IF num_tables < 1000 THEN
      raise_application_error(-20101, 'Issuing message');
   ELSE
      NULL; -- comment
   END IF;
END scott.sample_proc4;
CREATE PROCEDURE scott.sample_proc5
IS
   num_tables NUMBER;
   dual_rec dual%ROWTYPE;
   my_D emp.ename%TYPE;
BEGIN
   SELECT COUNT(*) INTO num_tables
      FROM dual;
END;
/
CREATE PROCEDURE scott.sample_proc5
IS
   num_tables NUMBER;
   dual_rec dual%ROWTYPE;
   my_D emp.ename%TYPE;
BEGIN
   SELECT COUNT(*) INTO num_tables
      FROM dual;
END scott.sample_proc5;

표 2는 Linux, UNIX 및 Windows용 DB2 버전 9.7 소스 데이터베이스에서 Oracle Database 11g 목표 데이터베이스로 PL/SQL 프로시저를 복사하는 경우 생성되는 DDL의 예를 보여줍니다.

표 2. Linux, UNIX 및 Windows용 DB2 버전 9.7 데이터베이스에서 Oracle Database 11g로 PL/SQL 프로시저를 복사하는 예
DB2 버전 9.7 데이터베이스 PL/SQL 프로시저 정의 Oracle Database 11g에 대해 생성된 DDL
CREATE PROCEDURE OM2BSP13 (
   v_idno    NUMBER,
   v_fname   VARCHAR2,
   v_dept    NUMBER,
   v_div     NUMBER)
ASBEGIN
   INSERT INTO TBOMSP13 VALUES
     (v_idno, v_fname, v_dept, v_div);
END; 
CREATE PROCEDURE OM2BSP13 (
   v_idno   NUMBER,
   v_fname  VARCHAR2,
   v_dept    NUMBER,
   v_div    NUMBER)
ASBEGIN
   INSERT INTO TBOMSP13 VALUES
     (v_idno, v_fname, v_dept, v_div);
END;

피드백