SnowConvert AI - Oracle - Rowid 데이터 타입

설명

데이터베이스의 각 행에는 주소가 있습니다.(Oracle SQL 언어 참조 Rowid 데이터 타입)

ROWID DataType

설명

Oracle 데이터베이스에서 기본으로 제공되는 힙으로 구성된 테이블의 행에는 rowids라는 행 주소가 있습니다. 의사 열 ROWID 를 쿼리하여 행 주소를 검사할 수 있습니다. 이 의사 열의 값은 각 행의 주소를 나타내는 문자열입니다. 이러한 문자열의 데이터 타입은 ROWID 입니다. ROWID 데이터 타입의 실제 열을 포함하는 테이블 및 클러스터를 생성할 수도 있습니다. (Oracle SQL Language Reference ROWID 데이터 타입)

ROWID

Copy

샘플 소스 패턴

Create Table의 ROWID

Oracle
CREATE TABLE rowid_table 
(
    rowid_column ROWID
);
Copy
Snowflake
CREATE OR REPLACE TABLE rowid_table
    (
        rowid_column VARCHAR(18) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWID DATA TYPE CONVERTED TO VARCHAR ***/!!!
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;
Copy

ROWID 열에 데이터 삽입

아래 예시와 같이 삽입에 유효한 ROWID 가 있는 경우 ROWID 열에 데이터를 삽입할 수 있습니다. 안타깝게도 테이블에서 ROWID 검색은 허용되지 않습니다.

Oracle
INSERT INTO rowid_table VALUES ('AAATtCAAMAAAADLABD');

SELECT rowid_column FROM rowid_table;
Copy
결과

ROWID_COLUMN

AAATtCAAMAAAADLABD

Snowflake
INSERT INTO rowid_table
VALUES ('AAATtCAAMAAAADLABD');

SELECT rowid_column FROM
rowid_table;
Copy
결과

ROWID_COLUMN

AAATtCAAMAAAADLABD

Known Issues

참고

결과 세트가 너무 커서 _Row Limiting Clause_가 추가되었습니다. 이 절을 제거하면 전체 결과 세트를 검색할 수 있습니다.

1. 이 데이터 타입의 명시적 열이 없는 테이블에서 ROWID 검색하기

Snowflake 포럼 의 설명과 같이 ROWID 는 Snowflake에서 지원되지 않습니다. 다음 쿼리는 hr.employees에 ROWID 열이 포함되어 있지 않으므로 Snowflake는 오류를 표시합니다.

Oracle

SELECT
    ROWID
FROM 
    hr.employees 
FETCH NEXT 10 ROWS ONLY;
Copy
결과

ROWID

AAATtCAAMAAAADLABD

AAATtCAAMAAAADLABV

AAATtCAAMAAAADLABX

AAATtCAAMAAAADLAAv

AAATtCAAMAAAADLAAV

AAATtCAAMAAAADLAAD

AAATtCAAMAAAADLABL

AAATtCAAMAAAADLAAP

AAATtCAAMAAAADLAA6

AAATtCAAMAAAADLABg

Snowflake
SELECT
    --** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
    '' AS ROWID
FROM
    hr.employees
FETCH NEXT 10 ROWS ONLY;
Copy
결과

위험

SQL 컴파일 오류: 잘못된 식별자 ‘ROWID’

UROWID 데이터 타입

설명

Oracle은 universal rowids(urowid)를 사용하여 인덱스가 지정된 테이블과 외부 테이블의 주소를 저장합니다. 인덱스로 조직된 테이블에는 논리적 urowid가 있고, 외래 테이블에는 외래 urowid가 있습니다. (Oracle SQL Language Reference UROWID 데이터 타입)

UROWID [(size)]

Copy

샘플 소스 패턴

Create Table의 UROWID

Oracle
CREATE TABLE urowid_table 
(
    urowid_column UROWID,
    urowid_sized_column UROWID(40)
);
Copy
Snowflake
CREATE OR REPLACE TABLE urowid_table
    (
        urowid_column VARCHAR(18) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - UROWID DATA TYPE CONVERTED TO VARCHAR ***/!!!,
        urowid_sized_column VARCHAR(18) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - UROWID DATA TYPE CONVERTED TO VARCHAR ***/!!!
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;
Copy

UROWID 열에 데이터 삽입

ROWID와 같이 삽입에 유효한 UROWID가 있는 경우 UROWID 열에 데이터를 삽입할 수 있지만 테이블에서의 검색은 허용되지 않습니다.

Oracle
INSERT INTO urowid_table VALUES ('*BAMAAJMCVUv+','*BAMAAJMCVUv+');

SELECT * FROM urowid_table;
Copy
결과

UROWID_COLUMN

UROWID_SIZED_COLUMN

*BAMAAJMCVUv+

*BAMAAJMCVUv+

Snowflake** SSC-FDM-0007 - MISSING DEPENDENT OBJECT “urowid_table” **
INSERT INTO urowid_table
VALUES ('*BAMAAJMCVUv+','*BAMAAJMCVUv+');

SELECT * FROM
urowid_table;
Copy
결과

UROWID_COLUMN

UROWID_SIZED_COLUMN

*BAMAAJMCVUv+

*BAMAAJMCVUv+

Known Issues

참고

결과 세트가 너무 커서 _Row Limiting Clause_가 추가되었습니다. 이 절을 제거하면 전체 결과 세트를 검색할 수 있습니다.

1. 이 데이터 타입의 명시적 열이 없는 테이블에서 UROWID 검색하기

다음 쿼리는 hr.countries에 ROWID (Oracle 설명서 의 설명과 같이 UROWID 는 SELECTROWID 문으로 액세스됨) 열이 포함되어 있지 않으므로 Snowflake에서 오류를 표시합니다.

Oracle

SELECT
    rowid,
    country_name
FROM
    hr.countries FETCH NEXT 10 ROWS ONLY;
Copy
결과

ROWID

COUNTRY_NAME

*BAMAAJMCQVL+

아르헨티나

*BAMAAJMCQVX+

오스트레일리아

*BAMAAJMCQkX+

벨기에

*BAMAAJMCQlL+

브라질

*BAMAAJMCQ0H+

캐나다

*BAMAAJMCQ0j+

스위스

*BAMAAJMCQ07+

중국

*BAMAAJMCREX+

독일

*BAMAAJMCREv+

덴마크

*BAMAAJMCRUf+

이집트

Snowflake
SELECT
        --** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
        '' AS rowid,
        country_name
FROM
        hr.countries
FETCH NEXT 10 ROWS ONLY;
Copy
결과

위험

SQL 컴파일 오류: 잘못된 식별자 ‘ROWID’

2. EWI should be displayed by SnowConvert AI

EWI는 UROWID 열을 선택하려고 시도할 때 표시되어야 합니다. 해당 EWI를 추가하는 작업 항목이 있습니다.

위험

이 문제는 심각한 것으로 표시되었으며 향후 릴리스에서 수정될 예정입니다.

관련 EWIs

  1. SSC-EWI-0036: 다른 데이터 타입으로 변환된 데이터 타입입니다.

  2. SSC-FDM-OR0030: ROWID 의사 열은 Snowflake에서 지원되지 않습니다