SnowConvert AI – Oracle – Alle Typen

Beschreibung

Die Any-Typen ermöglichen eine sehr flexible Modellierung von Prozedurparametern und Tabellenspalten, bei denen der tatsächliche Typ nicht bekannt ist. Mithilfe dieser Datentypen können Sie Typbeschreibungen, Dateninstanzen und Sätze von Dateninstanzen beliebiger anderer SQL-Typen dynamisch kapseln und darauf zugreifen. (Oracle SQL-Sprachreferenz – ANYTYPES-Datentypen)

ANYDATA

Beschreibung

Dieser Typ enthält eine Instanz eines bestimmten Typs mit Daten sowie eine Beschreibung des Typs. ANYDATA kann als Tabellenspalten-Datentyp verwendet werden und ermöglicht es Ihnen, heterogene Werte in einer einzigen Spalte zu speichern. Bei den Werten kann es sich sowohl um SQL integrierte Typen als auch um benutzerdefinierte Typen handeln. (Oracle SQL Language Reference ANYDATA Data Type).

Der Datentyp ANYDATA wird in Snowflake nicht unterstützt.

{ SYS.ANYDATA | ANYDATA }
Copy

Beispielhafte Quellcode-Muster

Create Table mit ANYDATA

Oracle
CREATE TABLE anydatatable
(
    col1 NUMBER,
    col2 ANYDATA,
    col3 SYS.ANYDATA
);
Copy
Snowflake
CREATE OR REPLACE TABLE anydatatable
    (
        col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
        col2 VARIANT,
        col3 VARIANT
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;
Copy

Daten in die Spalte ANYDATA einfügen

Oracle
INSERT INTO anydatatable VALUES(
	555,
	ANYDATA.ConvertVarchar('Another Test Text')
);
Copy
Snowflake
INSERT INTO anydatatable
VALUES(
	555,
	ANYDATA.ConvertVarchar('Another Test Text') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertVarchar' NODE ***/!!!
);
Copy

Funktionales Beispiel

Warnung

Dieses Beispiel ist keine Übersetzung von SnowConvert AI, wird sie nur verwendet, um die funktionale Äquivalenz zwischen ANYDATA von Oracle und VARIANT von Snowflake anzuzeigen.

Warnung

Wir verwenden das integrierte Paket ANYDATA. Die Konvertierung für dieses Paket wird derzeit von SnowConvert nicht unterstützt.

Oracle
--Create Table
CREATE TABLE anydatatable_example 
(
	col1 ANYDATA,
	col2 ANYDATA,
	col3 ANYDATA,
	col4 ANYDATA,
	col5 ANYDATA
);

--Insert data
INSERT INTO anydatatable_example VALUES(
	ANYDATA.ConvertNumber(123),
	ANYDATA.ConvertVarchar('Test Text'),
	ANYDATA.ConvertBFloat(3.14f), 
	ANYDATA.ConvertDate(CURRENT_DATE),
	ANYDATA.ConvertTimestamp(CURRENT_TIMESTAMP)
);

--Retrieve information
SELECT
	ANYDATA.AccessNumber(col1) AS col1,
	ANYDATA.AccessVarchar(col2) AS col2,
	ANYDATA.AccessBFloat(col3) AS col3,
	ANYDATA.AccessDate(col4) AS col4,
	ANYDATA.AccessTimestamp(col5) AS col5
FROM anydatatable_example;
Copy
Ergebnis

COL1

COL2

COL3

COL4

COL5

123

Test Text

3.14

2021-12-05 18:24:59.000

2021-12-05 18:24:59.100

Snowflake
--Create Table
CREATE OR REPLACE TABLE anydatatable_example
	(
		col1 VARIANT,
		col2 VARIANT,
		col3 VARIANT,
		col4 VARIANT,
		col5 VARIANT
	)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

--Insert data
INSERT INTO anydatatable_example
VALUES(
	ANYDATA.ConvertNumber(123) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertNumber' NODE ***/!!!,
	ANYDATA.ConvertVarchar('Test Text') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertVarchar' NODE ***/!!!,
	ANYDATA.ConvertBFloat(3.14) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertBFloat' NODE ***/!!!,
	ANYDATA.ConvertDate(CURRENT_DATE()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertDate' NODE ***/!!!,
	ANYDATA.ConvertTimestamp(CURRENT_TIMESTAMP()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertTimestamp' NODE ***/!!!
);

--Retrieve information
SELECT
	ANYDATA.AccessNumber(col1) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessNumber' NODE ***/!!! AS col1,
	ANYDATA.AccessVarchar(col2) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessVarchar' NODE ***/!!! AS col2,
	ANYDATA.AccessBFloat(col3) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessBFloat' NODE ***/!!! AS col3,
	ANYDATA.AccessDate(col4) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessDate' NODE ***/!!! AS col4,
	ANYDATA.AccessTimestamp(col5) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessTimestamp' NODE ***/!!! AS col5
FROM
	anydatatable_example;
Copy
Ergebnis

COL1

COL2

COL3

COL4

COL5

123

„Test Text“

3.14

2021-12-05

„2021-12-05 18:24:43.326 -0800“

Bekannte Probleme

1. No access to the ANYDATA built-in package

Die meisten Operationen mit ANYDATA-Spalten erfordern die Verwendung des integrierten ANYDATA-Pakets. Die Transformation für integrierte Oracle-Pakete von SnowConvert AI noch nicht unterstützt.

ANYDATASET

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Dieser Typ enthält eine Beschreibung eines bestimmten Typs sowie eine Reihe von Dateninstanzen dieses Typs. ANYDATASET kann als Prozedurparameter-Datentyp verwendet werden, wenn eine solche Flexibilität erforderlich ist. Die Werte der Dateninstanzen können sowohl von SQL integrierten Typen als auch von benutzerdefinierten Typen sein. (Oracle SQL Language Reference ANYDATASET Data Type).

Der Datentyp ANYDATASET wird in Snowflake nicht unterstützt. Eine mögliche Umgehungsmöglichkeit für diesen Datentyp könnte Snowflake ARRAY sein, allerdings wird diese Transformation derzeit nicht von SnowConvert unterstützt.

{ SYS.ANYDATASET | ANYDATASET }
Copy

Beispielhafte Quellcode-Muster

Create Table mit ANYDATASET

Oracle
CREATE TABLE anydatasettable
(
	col1 NUMBER,
	col2 ANYDATASET,
	col3 SYS.ANYDATASET
);
Copy
Snowflake
CREATE OR REPLACE TABLE anydatasettable
	(
		col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col2 ANYDATASET,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col3 SYS.ANYDATASET
	)
	COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
	;
Copy

Daten in die Spalte ANYDATASET einfügen

Oracle
DECLARE
    anytype_example    ANYTYPE;
    anydataset_example ANYDATASET;
BEGIN
    ANYDATASET.BEGINCREATE(DBMS_TYPES.TYPECODE_VARCHAR2, anytype_example, anydataset_example);

    anydataset_example.ADDINSTANCE;
    anydataset_example.SETVARCHAR2('First element');
   
    anydataset_example.ADDINSTANCE;
    anydataset_example.SETVARCHAR2('Second element');
   
    ANYDATASET.ENDCREATE(anydataset_example);

    INSERT INTO anydatasettable VALUES (123, anydataset_example);
END;
Copy
Snowflake
DECLARE
    !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
    anytype_example    ANYTYPE;
    !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
    anydataset_example ANYDATASET;
BEGIN
    CALL
    ANYDATASET.BEGINCREATE(
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_TYPES.TYPECODE_VARCHAR2' IS NOT CURRENTLY SUPPORTED. ***/!!!
    '' AS TYPECODE_VARCHAR2, :anytype_example, :anydataset_example);
    CALL

    anydataset_example.ADDINSTANCE();
    CALL
    anydataset_example.SETVARCHAR2('First element');
    CALL

    anydataset_example.ADDINSTANCE();
    CALL
    anydataset_example.SETVARCHAR2('Second element');
    CALL

    ANYDATASET.ENDCREATE(:anydataset_example);

    INSERT INTO anydatasettable
    VALUES (123, :anydataset_example);
END;
Copy

Bekannte Probleme

1. Inserts are being parsed incorrectly

Einige der Funktionen, die zum Erstellen und Einfügen eines neuen ANYDATASET-Objekts erforderlich sind, werden von SnowConvert nicht korrekt geparst.

1. No access to the ANYDATASET built-in package

Die meisten Operationen mit ANYDATASET-Spalten erfordern die Verwendung des integrierten ANYDATASET-Pakets. Die Transformation für integrierte Oracle-Pakete von SnowConvert AI noch nicht unterstützt.

Zugehörige EWIs

  1. SSC-EWI-OR0076: Integriertes Paket wird nicht unterstützt.

  2. SSC-FDM-0006: Spalte vom Typ ‚number‘ verhält sich in Snowflake möglicherweise nicht ähnlich.

  3. SSC-EWI-0028: TYPE wird von Snowflake nicht unterstützt.

ANYTYPE

Beschreibung

Dieser Typ kann eine Typbeschreibung eines beliebigen benannten SQL-Typs oder eines unbenannten transienten Typs enthalten. (Oracle SQL Language Reference ANYTYPE Data Type).

Der Datentyp ANYTYPE wird in Snowflake nicht unterstützt.

{ SYS.ANYTYPE | ANYTYPE }
Copy

Beispielhafte Quellcode-Muster

Create Table mit ANYTYPE

Oracle
CREATE TABLE anytypetable 
(
	col1 NUMBER,
	col2 ANYTYPE,
	col3 SYS.ANYTYPE
);
Copy
Snowflake
CREATE OR REPLACE TABLE anytypetable
	(
		col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col2 ANYTYPE,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col3 SYS.ANYTYPE
	)
	COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
	;
Copy

Daten in die Spalte ANYTYPE einfügen

Oracle
--Create Custom Type
CREATE OR REPLACE TYPE example_type AS OBJECT (id NUMBER, name VARCHAR(20));

--Insert
INSERT INTO anytypetable VALUES(
    123,
    GETANYTYPEFROMPERSISTENT ('HR', 'EXAMPLE_TYPE')
);
Copy
Snowflake
--Create Custom Type
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE OR REPLACE TYPE example_type AS OBJECT (id NUMBER, name VARCHAR(20))
;

--Insert
INSERT INTO anytypetable
VALUES(
    123,
    GETANYTYPEFROMPERSISTENT ('HR', 'EXAMPLE_TYPE') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'GETANYTYPEFROMPERSISTENT' NODE ***/!!!
);
Copy

Bekannte Probleme

1. No access to the ANYTYPE built-in package

Die meisten Operationen mit ANYDATA-Spalten erfordern die Verwendung des integrierten ANYTYPE-Pakets. Die Transformation für integrierte Oracle-Pakete von SnowConvert AI noch nicht unterstützt.

Zugehörige EWIs

  1. SSC-EWI-0056: CREATE-Typ wird nicht unterstützt.

  2. SSC-EWI-0073: Überprüfung auf gleichwertige Funktion ausstehend.

  3. SSC-EWI-0028: TYPE wird in Snowflake nicht unterstützt.

  4. SSC-FDM-0006: Spalte vom Typ ‚number‘ verhält sich in Snowflake möglicherweise nicht ähnlich.