SnowConvert: Oracle-Pseudospalten

ROWID

Beschreibung

Für jede Zeile in der Datenbank gibt die Pseudospalte ROWID die Adresse der Zeile zurück. (Oracle SQL Language Reference Rowid pseudocolumn)

Snowflake hat keine Entsprechung für ROWID. Die Pseudospalte wird in NULL umgewandelt, um Laufzeitfehler zu vermeiden.

ROWID

Copy

Beispielhafte Quellcode-Muster

Oracle

 CREATE TABLE sample_table
(
    sample_column varchar(10)
);

INSERT INTO sample_table(sample_column) VALUES ('text 1');
INSERT INTO sample_table(sample_column) VALUES ('text 2');

SELECT ROWID FROM sample_table;
SELECT MAX(ROWID) FROM sample_table;
Copy
|ROWID             |
|------------------|
|AAASfCAABAAAIcpAAA|
|AAASfCAABAAAIcpAAB|


Copy
|MAX(ROWID)        |
|------------------|
|AAASfCAABAAAIcpAAB|


Copy
Snowflake
 CREATE OR REPLACE TABLE sample_table
    (
        sample_column varchar(10)
    )
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;

INSERT INTO sample_table(sample_column) VALUES ('text 1');

INSERT INTO sample_table(sample_column) VALUES ('text 2');

SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
sample_table;

SELECT MAX(
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID) FROM
sample_table;
Copy
|NULL|
|----|
|    |
|    |


Copy
|MAX(/*** MSC-ERROR - MSCEWI3094 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS ***/
NULL)|
|------------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                                |


Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

ROWNUM

Beschreibung

Für jede von einer Abfrage zurückgegebene Zeile gibt die Pseudospalte ROWNUM eine Zahl zurück, die die Reihenfolge angibt, in der Oracle die Zeile aus einer Tabelle oder einem Satz von verbundenen Zeilen auswählt. (Oracle SQL Language Reference Rownum pseudocolumn)

Snowflake hat keine Entsprechung für ROWNUM. Der Ansatz für die Transformation nutzt die Vorteile der Snowflake seq8-Funktion, um die Funktionalität zu emulieren.

ROWNUM

Copy

Beispielhafte Quellcode-Muster

Oracle

-- Table with sample data
CREATE TABLE TABLE1(COL1 VARCHAR(20), COL2 NUMBER);
INSERT INTO TABLE1 (COL1, COL2) VALUES('ROWNUM: ', null);
INSERT INTO TABLE1 (COL1, COL2) VALUES('ROWNUM: ', null);

-- Query 1: ROWNUM in a select
SELECT ROWNUM FROM TABLE1;

-- Query 2: ROWNUM in DML
UPDATE TABLE1 SET COL2 = ROWNUM;
SELECT * FROM TABLE1;
Copy
|ROWNUM|
|------|
|1     |
|2     |


Copy
|COL1    |COL2|
|--------|----|
|ROWNUM: |1   |
|ROWNUM: |2   |


Copy
Snowflake
 -- Table with sample data
CREATE OR REPLACE TABLE TABLE1 (COL1 VARCHAR(20),
COL2 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

INSERT INTO TABLE1(COL1, COL2) VALUES('ROWNUM: ', null);

INSERT INTO TABLE1(COL1, COL2) VALUES('ROWNUM: ', null);

-- Query 1: ROWNUM in a select
SELECT
seq8() + 1
FROM
TABLE1;

-- Query 2: ROWNUM in DML
UPDATE TABLE1
SET COL2 = seq8() + 1;

SELECT * FROM
TABLE1;
Copy
|SEQ8() + 1|
|----------|
|1         |
|2         |


Copy
|COL1    |COL2|
|--------|----|
|ROWNUM: |1   |
|ROWNUM: |2   |


Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

  1. [SSC-FDM-0006:](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0006) Zahlentyp-Spalte verhält sich in Snowflake möglicherweise nicht ähnlich