ROWNUM

Translation spec for ROWNUM pseudocolumn

Description

For each row returned by a query, the ROWNUM pseudocolumn returns a number indicating the order in which Oracle selects the row from a table or set of joined rows. (Oracle SQL Language Reference Rownum pseudocolumn)

Snowflake does not have an equivalent for ROWNUM. The approach for the transformation is taking advantage of the Snowflake seq8 function to emulate the functionality.

ROWNUM

Sample Source Patterns

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;

Snowflake

-- Table with sample data
CREATE OR REPLACE TABLE PUBLIC.TABLE1 (
COL1 VARCHAR(20),
COL2 NUMBER (38,18) /*** MSC-WARNING - MSCEWI1066 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE ***/
);

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

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

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

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

SELECT * FROM
PUBLIC.TABLE1;

Known Issues

No issues were found.

No related EWIs.

Last updated