SnowConvert AI - Oracle - DML STATEMENTS¶
설명 ¶
DML 문 확장자은 컬렉션 및 레코드와 같은 PL/SQL 요소를 사용할 수 있으므로 일반 DML 문과 다릅니다. 지금까지 이러한 요소 중 일부는 Snowflake Scripting에서 지원되지 않습니다. 1개의 문이 지원되지 않는 경우 변환 중에 EWI 가 추가됩니다. 기타 DML 문은 프로시저 내에 없는 것처럼 변환됩니다.
INSERT 문 확장¶
Oracle INSERT 문 확장을 Snowflake Scripting으로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
SQL
INSERT문에 대한 PL/SQL 확장을 사용하면insert_into_clause에서 열 목록을 지정하는 대신single_table_insert의values_clause에서 레코드 이름을 지정할 수 있습니다. (Oracle PL/SQL Language Reference INSERT 문 확장)
Snowflake INSERT INTO differs from Snowflake Scripting in variable constraints; needing to have the names preceded by a colon ‘:’ to bind the variables’ value.
권장 사항¶
참고
이 코드는 예제를 더 잘 이해하기 위해 실행한 것입니다.
Oracle¶
Snowflake¶
INSERT 문 확장 단순 케이스¶
Oracle¶
결과¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
eleven |
Snowflake Scripting¶
결과¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
eleven |
Known Issues¶
1. Records are not supported by Snowflake Scripting¶
Snowflake Scripting에서는 레코드가 지원되지 않으므로 VALUES record 절을 사용하는 대신 SELECT 절로 변경하고 레코드의 열을 분할해야 합니다. 자세한 내용은 레코드 유형 정의 섹션을 참조하세요.
MERGE 문¶
Oracle MERGE 문을 Snowflake Scripting으로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
The
MERGEstatement is used to select rows from one or more sources for update or insertion into a table or view. It is possible to specify conditions to determine whether to update or insert into the target table or view. This statement is a convenient way to combine multiple operations. It lets you avoid multipleINSERT,UPDATE, andDELETEDML statements.MERGEis a deterministic statement. It is not possible to update the same row of the target table multiple times in the sameMERGEstatement. (Oracle PL/SQL Language Reference MERGE Statement)
Oracle MERGE 구문¶
Snowflake Scripting MERGE 구문¶
샘플 소스 패턴¶
샘플 보조 데이터¶
참고
이 코드는 예제를 더 잘 이해하기 위해 실행한 것입니다.
Oracle¶
Snowflake¶
MERGE 문 단순 케이스¶
Oracle¶
결과¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
Snowflake¶
결과¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
DELETE 및 where 절이 있는 MERGE 문¶
To find an equivalence for the DELETE statement and the where clause, it is necessary to reorder and implement some changes in the Snowflake merge statement.
필수가 변경되었습니다.¶
Oracle의 DELETE where_clause 을 새로운 Snowflake의 matchedClause 및 **조건자문으로 바꿉니다
Oracle의 merge_insert_clause 에 있는 where_clause 를 Snowflake의 notMatchedClause 에 있는 AND 조건자 문으로 바꿉니다.
Oracle¶
결과¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Snowflake¶
결과¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
경고
In some cases the changes applied may not work as expected, like the next example:
Oracle¶
결과¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
4 |
Dave |
Brown |
Mr |
Snowflake¶
결과¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
4 |
Dave |
Brown |
Mr |
Known Issues¶
1. Oracle’s error_logging_clause is not supported¶
Snowflake Scripting에는 오류 로깅 절에 해당하는 절이 없습니다.
2. Changed applied do not work as expected¶
Sometimes, the changes applied to achieve the functional equivalence between Oracle’s merge statement and Snowflake’s do not work as expected.
관련 EWIs¶
SSC-FDM-0006: 숫자 유형 열이 Snowflake에서 유사하게 동작하지 않을 수 있습니다.
SSC-FDM-OR0018: Merge 문이 예상대로 동작하지 않을 수 있음
SELECT INTO 문¶
Oracle SELECT INTO 문을 Snowflake Scripting으로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
SELECTINTO문은 1개 이상의 데이터베이스 테이블에서 값을 검색하여(SQLSELECT문과 동일) 변수에 저장합니다(SQLSELECT문과 다름). (Oracle PL/SQL Language Reference SELECT INTO 문)
Oracle SELECT INTO 구문¶
Oracle Into 절 구문¶
Oracle 대량 컬렉션 구문¶
Snowflake Scripting SELECT INTO 구문¶
샘플 소스 패턴¶
샘플 보조 데이터¶
참고
이 코드는 예제를 더 잘 이해하기 위해 실행한 것입니다.
Oracle¶
Snowflake¶
SELECT INTO 문 단순 케이스¶
Oracle¶
결과¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
하나 |
Snowflake Scripting¶
결과¶
Known Issues¶
1. BULK COLLECT INTO is not supported¶
Snowflake Scripting은 BULK COLLECT INTO 절을 지원하지 않습니다. 그러나 ARRAY_AGG를 사용하여 새 변수를 구성할 수 있습니다. 자세한 내용은 컬렉션 대량 작업 섹션을 참조하세요.
2. Collections and records are not supported¶
Snowflake Scripting does not support the use of collections nor records. It is possible to migrate them using Semi-structured data types as explained in Collections and records.
관련 EWIs¶
관련 EWIs 없음.
레코드 사용 시뮬레이션을 위한 해결 방법¶
경고
이 페이지는 더 이상 사용되지 않지만 호환성을 위해 남겨두었습니다. 업데이트된 섹션을 보려면 컬렉션 및 레코드를 참조하세요.
설명¶
이 섹션에서는 SELECT 및 INSERT 문에서 Snowflake Scripting의 RESULTSET 및 CURSORS 를 사용하여 Oracle 레코드의 동작을 시뮬레이션하는 방법에 대해 설명합니다.
Snowflake Scripting RESULTSET 및 CURSOR¶
Snowflake RESULTSET 구문¶
권장 사항¶
참고
다음 예제에서는 예제에 대한 이해를 돕기 위해 다음 코드를 실행했습니다.
Oracle¶
Snowflake¶
RESULTSET 및 레코드 대신 커서 사용¶
Oracle¶
결과¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
하나 |
Snowflake¶
커서 사용하기
결과¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
하나 |
Known Issues¶
1. Limitation in the use of RESULTSET¶
RESULTSET 은 사용이 매우 제한적입니다. table(result_scan(last_query_id())) 문은 RESULTSET 의 쿼리가 실행된 직후에 사용해야 합니다. 자세한 내용은 이 링크 에서 확인할 수 있습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
SSC-EWI-0056: 지원되지 않는 Create Type입니다.