Beispiele für das Kopieren von PL/SQL-Prozeduren

Die folgenden Beispiele zeigen die DDL, die generiert wird, wenn Sie PL/SQL-Prozeduren zwischen heterogenen Datenbanken kopieren.

Die generierte DDL-Datei wird auf der Seite DDL voranzeigen im Assistenten Datenbankobjekte einfügen angezeigt.

In Tabelle 1 werden Beispiele für die DDL gezeigt, die für das Kopieren von PL/SQL-Prozeduren aus einer Oracle Database 11g-Quellendatenbank in eine DB2 Version 9.7 für Linux®, UNIX® und Windows®-Zieldatenbank generiert wird.

Tabelle 1. Beispiele für das Kopieren von PL/SQL-Prozeduren aus Oracle Database 11g in eine DB2 Version 9.7 für Linux, UNIX und Windows-Datenbank
Oracle Database 11g - PL/SQL-Prozedurdefinition Generierte DDL für Datenbank in DB2 Version 9.7
CREATE OR REPLACE PROCEDURE scott.sample_proc1
AUTHID DEFINER
AS
BEGIN
   INSERT INTO detail_proc_insert
      VALUES(1,'hello');
END;
/
CREATE PROCEDURE scott.sample_proc1
AUTHID DEFINER
AS
BEGIN
   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;

In Tabelle 2 wird ein Beispiel für die DDL gezeigt, die für das Kopieren einer PL/SQL-Prozedur aus einer DB2 Version 9.7 für Linux, UNIX und Windows-Quellendatenbank in eine Oracle Database 11g-Zieldatenbank generiert wird.

Tabelle 2. Beispiel für das Kopieren einer PL/SQL-Prozedur aus einer DB2 Version 9.7 für Linux, UNIX und Windows-Datenbank in Oracle Database 11g
DB2 Version 9.7-Datenbank - PL/SQL-Prozedurdefinition Generierte DDL für Oracle Database 11g
CREATE PROCEDURE OM2BSP13 (
   v_idno    NUMBER,
   v_fname   VARCHAR2,
   v_dept    NUMBER,
   v_div     NUMBER)
AS
BEGIN
   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)
AS
BEGIN
   INSERT INTO TBOMSP13 VALUES
     (v_idno, v_fname, v_dept, v_div);
END;

Feedback