CYBERTEC Migrator Documentation
Wechsel zwischen Dunkel/Hell/Auto Modus Wechsel zwischen Dunkel/Hell/Auto Modus Wechsel zwischen Dunkel/Hell/Auto Modus Zurück zur Startseite Support

Code Transpilierung

Der CYBERTEC Migrator ist in der Lage, bestimmte PL/SQL-Konstrukte zu parsen, zu analysieren und automatisch nach PL/pgSQL zu transpilieren. Jedes unterstützte Konstrukt wird durch eine entsprechende Regel dargestellt.

Dieses Feature-Set wird ständig weiterentwickelt, wobei neue Regeln hinzugefügt werden, wo immer dies möglich ist. Wenn Sie einen Vorschlag für eine neue Regel haben, öffnen Sie bitte einen feature request.

CYAR-0001: AddParamlistParentheses

In Oracle kann eine Prozedur ohne Parameter in ihrer Definition Klammern weglassen, während PostgreSQL sie immer benötigt.

Beispiel

-- PL/SQL
CREATE PROCEDURE proc   IS ...;
-- PL/pgSQL
CREATE PROCEDURE proc() IS ...;

CYAR-0002: ReplacePrologue

Die Körper von Funktionen und Prozeduren in Oracle beginnen immer mit IS|AS BEGIN ..., welche zu PostgreSQLs AS $$ ... angepasst werden müssen.

Beispiel

-- PL/SQL
CREATE PROCEDURE proc IS    BEGIN ...;
-- PL/pgSQL
CREATE PROCEDURE proc AS $$ BEGIN ...;

CYAR-0003: ReplaceEpilogue

Das Gegenstück zu CYAR-0002, welches sich um den Epilog von Oracle Funktionen und Prozeduren kümmert. Der optionale Block-Identifier wird entfernt, und die LANGAGE wird eingefügt.

Beispiel

-- PL/SQL
CREATE PROCEDURE proc IS BEGIN ... END;
-- PL/pgSQL
CREATE PROCEDURE proc IS BEGIN ... END proc; $$ LANGUAGE plpgsql;

CYAR-0004: FixTrunc

Transpiliert Verwendung von Oracles trunc() Funktion, abhängig nach Argument-Typ.

Diese Regel ist noch nicht implementiert worden.

CYAR-0005: ReplaceSysdate

Transpiliert Oracles SYSDATE, welche die aktuelle Systemzeit zurückgibt (im Gegensatz zu der der Anweisung oder der Transaktion) zu PostgreSQL’s clock_timestamp().

Beispiel

-- PL/SQL
SELECT sysdate           FROM dual;
-- PL/pgSQL
SELECT clock_timestamp() FROM dual;

CYAR-0006: ReplaceNvl

Ersetz Oracles NVL mit PostgreSQLs coalesce.

Beispiel

-- PL/SQL
SELECT nvl(dummy, 'null')      FROM dual;
-- PL/pgSQL
SELECT coalesce(dummy, 'null') FROM dual;

CYAR-0007: RemoveEditionable

Da PostgreSQL das Konzept von Editioning nicht besitzt werden die EDITIONABLE und NONEDITIONABLE Keywords in Funktionen und Prozeduren entfernt.

Beispiel

-- PL/SQL
CREATE EDITIONABLE PROCEDURE proc ...;
-- PL/pgSQL
CREATE             PROCEDURE proc ...;

CYAR-0008: ReplaceNvl2

Ersetzt Oracles NVL2 mit einer CASE Anweisung.

Beispiel

-- PL/SQL
SELECT NVL2(dummy, 1, 2)                             FROM dual;
-- PL/pgSQL
SELECT CASE WHEN dummy IS NOT NULL THEN 1 ELSE 2 END FROM dual;