SnowConvert AI - Oracle

What is SnowConvert AI for Oracle?

SnowConvert AI is a software that understands Oracle SQL and PL/SQL, and performs the following conversions:

SnowConvert AI Terminology

Bevor wir uns in der Magie dieser Codekonvertierungen verlieren, hier ein paar Begriffe/Definitionen, damit Sie wissen, was wir meinen, wenn wir sie in der gesamten Dokumentation verwenden:

  • SQL (Structured Query Language): _ Die Standardsprache zum Speichern, Bearbeiten und Abfragen von Daten in den meisten modernen Datenbankarchitekturen.

  • _ PL/SQL: _ prozedurale Sprache (Procedural Language) für SQL. Diese wurde von Oracle entwickelt und wird von Oracle immer noch als Skriptsprache für gespeicherte Prozeduren und Funktionen in Oracle verwendet.

  • SnowConvert AI: The software that converts securely and automatically your Oracle files to the Snowflake cloud data platform.

  • Conversion rule or transformation rule: Rules that allow SnowConvert AI to convert from a portion of source code and determine the expected target code.

  • Parse: Parse or parsing is an initial process done by SnowConvert AI to understand the source code, and build up an internal data structure to process the conversion rules.

Let’s dive in to some of the code conversions that Snowflake SnowConvert AI can perform.

Codekonvertierungen

Oracle SQL zu Snowflake SQL

SnowConvert AI for Oracle takes in Oracle source code in SQL and converts the Data Definition Language (DDL), Data Manipulation Language (DML), and functions in the source code to the corresponding SQL in Snowflake SQL.

Beispiel

Hier ist ein Beispiel für die Konvertierung einer einfachen CREATE TABLE-Anweisung.

Quellcode:

CREATE TABLE "MyTable"
(
  "COL1" NUMBER,
  "COL2" NUMBER,
  "COL3" NUMBER GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL,
  "COL4" LONG,
  "COL5" CLOB,
  "COL6" ROWID,
  "COL7" NVARCHAR2(10),
  "COL8" RAW(255),
  CONSTRAINT "PK" PRIMARY KEY ("COL1")
);
Copy

Der migrierte Snowflake-SQL-Code:

CREATE OR REPLACE TABLE "MyTable"
  (
    "COL1" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
    "COL2" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
    "COL3" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/ AS (COL1 * COL2),
    "COL4" VARCHAR,
    "COL5" VARCHAR,
    "COL6" VARCHAR(18) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWID DATA TYPE CONVERTED TO VARCHAR ***/!!!,
    "COL7" VARCHAR(10),
    "COL8" BINARY,
    CONSTRAINT "PK" PRIMARY KEY ("COL1")
  )
  COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
  ;
Copy

Sie werden feststellen, dass in diesem konvertierten SQL vieles konvertiert wurde. Beispiele für Konvertierungen:

  • Standardmäßiges Hinzufügen des PUBLIC-Schemas für alle Tabellen- und Ansichtsnamen, wenn der Benutzer kein Schema angibt

  • CREATE TABLE in CREATE OR REPLACE TABLE

  • Datentypkonvertierungen:

    • LONG zu VARCHAR

    • CLOB zu VARCHAR

    • ROWID zu VARCHAR

    • NVARCHAR2 zu VARCHAR

    • RAW zu BINARY

  • Datentypattribute: GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL zu AS (COL1 * COL2)

For more information about data types and their equivalent: Data Types. More examples can be found in the rest of the documentation.

Oracle PL/SQL

SnowConvert AI takes Oracle stored procedures and functions (PL/SQL) and converts them to either Snowflake Scripting or JavaScript embedded into Snowflake SQL. Oracle CREATE PROCEDURE and REPLACE PROCEDURE syntax is replaced by Snowflake CREATE OR REPLACE PROCEDURE syntax.

Beispiel

Hier ein Beispiel für die Konvertierung einer einfachen CREATE PROCEDURE in Oracle, die eine Einfügung in eine für die Protokollierung verwendete Tabelle vornimmt.

Bemerkung

Dieses Beispiel wird sowohl für Snowflake Scripting als auch für JavaScript verwendet.

CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG 
      (final_proc  VARCHAR2, 
       final_message   VARCHAR2,
       logger_type VARCHAR2 DEFAULT 'I')
AS
BEGIN
  INSERT INTO SC_DEMO.PROC_LOG_TABLE
    VALUES (SC_DEMO.final_logging_seq.NEXTVAL,
            sysdate,
            SUBSTR(logger_type, 1, 1),
            SUBSTR(final_proc, 1, 30),
            SUBSTR(final_message, 1, 1024));
  COMMIT;

END;
Copy

Konvertierung in Snowflake Scripting

Snowflake Scripting ist eine Erweiterung von Snowflake SQL und bietet Unterstützung für prozedurale Logik. Daher können wir gespeicherte Prozeduren erstellen und ähnliche Verhaltensweisen und Anweisungen von Oracle PL/SQL replizieren.

Migriertes Beispiel

CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG
(final_proc VARCHAR, final_message VARCHAR,
 logger_type VARCHAR DEFAULT 'I')
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
  BEGIN
    INSERT INTO SC_DEMO.PROC_LOG_TABLE
      VALUES (SC_DEMO.final_logging_seq.NEXTVAL, CURRENT_TIMESTAMP(),
              SUBSTR(:logger_type, 1, 1),
              SUBSTR(:final_proc, 1, 30),
              SUBSTR(:final_message, 1, 1024));
    --** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
    COMMIT;
  END;
$$;
Copy

Bis JavaScript

JavaScript wird als Skriptsprache aufgerufen, und alle inneren Anweisungen werde in JavaScript umgewandelt. Wenn Sie die JavaScript-API besser verstehen möchten, lesen Sie diese Dokumentation.

Migriertes Beispiel

-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG
(final_proc STRING, final_message STRING,
 logger_type STRING DEFAULT 'I')
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
  // SnowConvert AI Helpers Code section is omitted.

  EXEC(`INSERT INTO SC_DEMO.PROC_LOG_TABLE
  VALUES (SC_DEMO.final_logging_seq.NEXTVAL, CURRENT_TIMESTAMP(),
            SUBSTR(?, 1, 1),
            SUBSTR(?, 1, 30),
            SUBSTR(?, 1, 1024))`,[LOGGER_TYPE,FINAL_PROC,FINAL_MESSAGE]);
  EXEC(`--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;`);
$$;
Copy

In diesem konvertierten SQL werden Sie feststellen, dass wir in eine neue Sprache (JavaScript) konvertiert haben, die in Snowflake SQL eingebettet ist. Es gibt mehr als ein paar Glanzpunkte, aber diese Dokumentation enthält alles Wesentliche, um diese Art der Konvertierung zu verstehen.

The line that states // ... Necessary SnowConvert AI Helpers are inserted here ... will actually have the SnowConvert AI JavaScript Helpers. They can be lengthy, so they are removed from this first example.

And that’s it! Snowflake SnowConvert AI takes the pain and frustration out of changing data platforms. Learn more about getting started with SnowConvert AI for Oracle on the next page.