Exemples de copie des procédures PL/SQL

Ces exemples présentent la DDL générée lorsque vous copiez des procédures PL/SQL entre des bases de données hétérogènes.

La DDL générée est présentée sur la page Aperçu du fichier DDL dans l'assistant Coller des objets de base de données.

Le tableau 1 présente des exemples de la DDL générée pour la copie des procédures PL/SQL d'une base de données source Oracle 11g vers une base de données cible DB2 Version 9.7 for Linux, UNIX, and Windows.

Tableau 1. Exemples de copie des procédures PL/SQL d'une base de données Oracle 11g vers une base de données DB2 Version 9.7 for Linux, UNIX, and Windows
Définition de la procédure PL/SQL de la base de données Oracle 11g DLL générée pour la base de données 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;

Le tableau 2 présente un exemple de la DDL générée pour la copie d'une procédure PL/SQL d'une base de données source DB2 Version 9.7 for Linux, UNIX, and Windows vers une base de données cible Oracle 11g.

Tableau 2. Exemple de copie de la procédure PL/SQL de la base de données DB2 Version 9.7 for Linux, UNIX, and Windows vers la base de données Oracle 11g
Définition de la procédure PL/SQL de la base de données DB2 Version 9.7 DDL générée pour la base de données Oracle 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;

Commentaires