SnowConvert : Pseudocolonnes Oracle

ROWID

Description

Pour chaque ligne de la base de données, la pseudocolonne ROWID renvoie l’adresse de la ligne. (Référence linguistique Oracle SQL pseudocolonne Rowid)

Snowflake n’a pas d’équivalent pour ROWID. La pseudocolonne est transformée en NULL afin d’éviter les erreurs d’environnement d’exécution.

ROWID

Copy

Modèles d’échantillons de sources

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

Problèmes connus

Aucun problème n’a été constaté.

ROWNUM

Description

Pour chaque ligne renvoyée par une requête, la pseudocolonne ROWNUM renvoie un nombre indiquant l’ordre dans lequel Oracle sélectionne la ligne dans une table ou un ensemble de lignes jointes. (Référence linguistique Oracle SQL pseudocolonne Rownum)

Snowflake n’a pas d’équivalent pour ROWNUM. L’approche de la transformation consiste à tirer parti de la fonction Snowflake seq8 pour émuler la fonctionnalité.

ROWNUM

Copy

Modèles d’échantillons de sources

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

Problèmes connus

Aucun problème n’a été constaté.

EWIs connexes

  1. SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake