SnowConvert AI - Oracle - Rowid 데이터 타입¶
설명¶
데이터베이스의 각 행에는 주소가 있습니다.(Oracle SQL 언어 참조 Rowid 데이터 타입)
ROWID DataType¶
설명¶
Oracle 데이터베이스에서 기본으로 제공되는 힙으로 구성된 테이블의 행에는 rowids라는 행 주소가 있습니다. 의사 열 ROWID 를 쿼리하여 행 주소를 검사할 수 있습니다. 이 의사 열의 값은 각 행의 주소를 나타내는 문자열입니다. 이러한 문자열의 데이터 타입은 ROWID 입니다. ROWID 데이터 타입의 실제 열을 포함하는 테이블 및 클러스터를 생성할 수도 있습니다. (Oracle SQL Language Reference ROWID 데이터 타입)
ROWID
샘플 소스 패턴¶
Create Table의 ROWID¶
Oracle¶
CREATE TABLE rowid_table
(
rowid_column ROWID
);
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"}}'
;
ROWID 열에 데이터 삽입¶
아래 예시와 같이 삽입에 유효한 ROWID 가 있는 경우 ROWID 열에 데이터를 삽입할 수 있습니다. 안타깝게도 테이블에서 ROWID 검색은 허용되지 않습니다.
Oracle¶
INSERT INTO rowid_table VALUES ('AAATtCAAMAAAADLABD');
SELECT rowid_column FROM rowid_table;
결과¶
ROWID_COLUMN |
|---|
AAATtCAAMAAAADLABD |
Snowflake¶
INSERT INTO rowid_table
VALUES ('AAATtCAAMAAAADLABD');
SELECT rowid_column FROM
rowid_table;
결과¶
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;
결과¶
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;
결과¶
위험
SQL 컴파일 오류: 잘못된 식별자 ‘ROWID’
UROWID 데이터 타입¶
설명¶
Oracle은 universal rowids(urowid)를 사용하여 인덱스가 지정된 테이블과 외부 테이블의 주소를 저장합니다. 인덱스로 조직된 테이블에는 논리적 urowid가 있고, 외래 테이블에는 외래 urowid가 있습니다. (Oracle SQL Language Reference UROWID 데이터 타입)
UROWID [(size)]
샘플 소스 패턴¶
Create Table의 UROWID¶
Oracle¶
CREATE TABLE urowid_table
(
urowid_column UROWID,
urowid_sized_column UROWID(40)
);
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"}}'
;
UROWID 열에 데이터 삽입¶
ROWID와 같이 삽입에 유효한 UROWID가 있는 경우 UROWID 열에 데이터를 삽입할 수 있지만 테이블에서의 검색은 허용되지 않습니다.
Oracle¶
INSERT INTO urowid_table VALUES ('*BAMAAJMCVUv+','*BAMAAJMCVUv+');
SELECT * FROM urowid_table;
결과¶
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;
결과¶
UROWID_COLUMN |
UROWID_SIZED_COLUMN |
|---|---|
*BAMAAJMCVUv+ |
*BAMAAJMCVUv+ |
Known Issues¶
참고
결과 세트가 너무 커서 _Row Limiting Clause_가 추가되었습니다. 이 절을 제거하면 전체 결과 세트를 검색할 수 있습니다.
1. 이 데이터 타입의 명시적 열이 없는 테이블에서 UROWID 검색하기
다음 쿼리는 hr.countries에 ROWID (Oracle 설명서 의 설명과 같이 UROWID 는 SELECT … ROWID 문으로 액세스됨) 열이 포함되어 있지 않으므로 Snowflake에서 오류를 표시합니다.
Oracle¶
SELECT
rowid,
country_name
FROM
hr.countries FETCH NEXT 10 ROWS ONLY;
결과¶
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;
결과¶
위험
SQL 컴파일 오류: 잘못된 식별자 ‘ROWID’
2. EWI should be displayed by SnowConvert AI¶
EWI는 UROWID 열을 선택하려고 시도할 때 표시되어야 합니다. 해당 EWI를 추가하는 작업 항목이 있습니다.
위험
이 문제는 심각한 것으로 표시되었으며 향후 릴리스에서 수정될 예정입니다.
관련 EWIs¶
SSC-EWI-0036: 다른 데이터 타입으로 변환된 데이터 타입입니다.
SSC-FDM-OR0030: ROWID 의사 열은 Snowflake에서 지원되지 않습니다