Ejemplos de copia de procedimientos PL/SQL

Estos ejemplos muestran el DDL que se genera al copiar procedimientos PL/SQL entre bases de datos heterogéneas.

El DDL generado se muestra en la página Vista previa de DDL del asistente Pegar objetos de base de datos.

La Tabla 1 muestra ejemplos del DDL que se genera para copiar procedimientos PL/SQL de una base de datos de origen Oracle Database 11g en una base de datos de destino DB2 Versión 9.7 para Linux, UNIX y Windows.

Tabla 1. Ejemplos de copia de procedimientos PL/SQL de Oracle Database 11g en una base de datos DB2 Versión 9.7 para Linux, UNIX y Windows
Definición de procedimiento PL/SQL de Oracle Database 11g DDL generado para la base de datos DB2 Versión 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; -- algún comentario
EXCEPTION
   WHEN deadlock_detected THEN
      null; -- error de manejo
END;
/
CREATE PROCEDURE scott.sample_proc3
IS
   detected EXCEPTION;
   PRAGMA EXCEPTION_INIT(detected, -60);
BEGIN
   null; -- algún comentario
EXCEPTION
   WHEN deadlock_detected THEN
      null; -- error de manejo
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; -- comentario
   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; -- comentario
   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;

La Tabla 2 muestra un ejemplo del DDL que se genera para copiar un procedimiento PL/SQL de una base de datos de origen DB2 Versión 9.7 para Linux, UNIX y Windows en una base de datos de destino Oracle Database 11g.

Tabla 2. Ejemplo de copia de un procedimiento PL/SQL de una base de datos DB2 Versión 9.7 para Linux, UNIX y Windows en Oracle Database 11g
Definición del procedimiento PL/SQL de la base de datos DB2 Versión 9.7 DDL generado para 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;

Comentarios