SnowConvert: Oracle疑似列

ROWID

説明

データベースの各行について、ROWID 擬似列はその行のアドレスを返します。(Oracle SQL 言語リファレンスRowid疑似列)

Snowflakeには ROWID に相当するものがありません。ランタイムエラーを避けるため、疑似列は NULL に変換されます。

ROWID

Copy

サンプルソースパターン

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

既知の問題

問題は見つかりませんでした。

ROWNUM

説明

ROWNUM 擬似列は、クエリで返される各行について、Oracleがテーブル行または結合行セットから行を選択する順序を示す番号を返します。(Oracle SQL 言語リファレンスRownum疑似列)

Snowflakeには ROWNUM に相当するものがありません。変換のアプローチは、Snowflakeの seq8 関数を利用して機能をエミュレートしています。

ROWNUM

Copy

サンプルソースパターン

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

既知の問題

問題は見つかりませんでした。

関連 EWIs

  1. SSC-FDM-0006: 番号タイプ列はSnowflakeでは同様の動作をしない可能性があります