SnowConvert: Oracle 문제¶
SSC-EWI-OR0001¶
설명¶
이 오류는 START WITH
문의 값이 LIMIT VALUE
로 설정된 경우 발생합니다.
Oracle에서 이 절은 ALTER TABLE 문과 함께만 사용됩니다.
START WITH LIMIT VALUE
옵션은 identity_options
에만 사용할 수 있으며 ALTER TABLE MODIFY
명령과 함께 사용해야 합니다. START WITH LIMIT VALUE
을 사용하면 Oracle 데이터베이스는:
테이블 잠그기
다음 중 하나 찾기:
최대 ID 열 값(시퀀스 증가 시)
최소 ID 열 값(시퀀스 감소 시)
이 값을 시퀀스 생성기의 하이 워터 마크로 설정합니다
다음 시퀀스 값을 계산합니다.
증가하는 시퀀스의 경우: 하이 워터 마크 +
INCREMENT BY 정수
감소하는 시퀀스의 경우: 하이 워터 마크 -
INCREMENT BY 정수
ALTER TABLE ORACLE¶
코드 예시¶
입력 코드:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
출력 코드:¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0001 - SEQUENCE START VALUE WITH 'LIMIT VALUE' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
START WITH LIMIT VALUE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}';
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0050¶
심각도¶
Medium
설명¶
이 오류는 허용 범위를 초과하는 값을 형 변환하려고 할 때 발생합니다. 즉, 전체 자릿수 값은 Snowflake에서 지원되지 않으므로 코드에 대한 설명과 함께 이 메시지가 추가됩니다.
코드 예시:¶
입력 코드:¶
SELECT CAST('123,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267+' AS NUMBER, '99.999999999999999999999999999999999999S') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267' AS NUMBER, '99.999999999999999999999999999999999999') FROM DUAL;
select cast(' 1.0E+123' as number, '9.9EEEE') from dual;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '123,456E+40' ***/!!!
CAST('123,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267+' ***/!!! CAST('12.34567891234567891234567891234567891267+' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999S') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267' ***/!!! CAST('12.34567891234567891234567891234567891267' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999') FROM DUAL;
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE ' 1.0E+123' ***/!!! cast(' 1.0E+123' as NUMBER(38, 18) , '9.9EEEE') from dual;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0110¶
이해하기 쉽도록 코드의 일부가 제거되었습니다.
심각도 ¶
높음
설명 ¶
Snowflake의 Snowscript 언어에는 FOR UPDATE
절에 해당하는 직접적인 표현이 없습니다. 이 도구는 변환 중에 오류, 경고 또는 정보(EWI) 메시지를 추가하고 이 절을 설명합니다.
예시 코드 ¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE for_update_clause
AS
update_record f_employee%rowtype;
CURSOR c1 IS SELECT * FROM f_employee FOR UPDATE OF employee_number nowait;
BEGIN
FOR CREC IN C1 LOOP
UPDATE f_employee SET employee_number = employee_number + 1000 WHERE CURRENT OF c1;
IF crec.id = 2 THEN
DELETE FROM f_employee WHERE CURRENT OF c1;
EXIT;
END IF;
END LOOP;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
c1 CURSOR
FOR
SELECT * FROM
f_employee
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF employee_number nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE f_employee
SET employee_number =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!! employee_number + 1000 WHERE CURRENT OF c1;
IF (crec.id = 2) THEN
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'CURRENT OF' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- DELETE FROM
-- f_employee
-- WHERE CURRENT OF c1
;
EXIT;
END IF;
END FOR;
CLOSE C1;
END;
$$;
권장 사항¶
UPDATE/DELETE
쿼리에서 열 업데이트를 처리합니다. 자세한 내용은 오류 코드 SSC-EWI-0075를 참조하십시오.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0035¶
이해하기 쉽도록 출력 코드의 일부가 제거되었습니다.
심각도¶
Medium
설명¶
표현식 컬렉션을 생성할려고 할 때 TABLE 함수는 Snowflake에서 사용할 수 없습니다. 이 기능은 현재 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
출력 코드:¶
// SnowConvert Helpers Code section is omitted.
SELECT
TABLE2.COLUMN_VALUES
FROM
TABLE1 i,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0035 - TABLE FUNCTION IS NOT SUPPORTED WHEN IT IS USED AS A COLLECTION OF EXPRESSIONS ***/!!! TABLE(i.groups) TABLE2;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0097¶
심각도¶
낮음
설명¶
CREATE PROCEDURE
문에 있는 Oracle의 추가 속성은 Snowflake의 CREATE PROCEDURE
구문에서 지원되지 않으므로 마이그레이션 중에 안전하게 생략할 수 있습니다.
코드 예시¶
입력 코드 Oracle:¶
CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
NULL;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE PROC01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0097 - PROCEDURE PROPERTIES ARE NOT SUPPORTED IN SNOWFLAKE PROCEDURES ***/!!!
AS
$$
BEGIN
NULL;
END;
$$;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0087¶
심각도¶
낮음
예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.
설명¶
이 오류는 (+) 연산자를 사용하는 Oracle의 외부 조인 구문을 ANSI JOIN 절로 변환하는 데 문제가 있을 때 발생합니다. 특히, 원래 쿼리에 테이블이 순환 패턴으로 조인되는 WHERE 절에 순환 테이블 참조가 포함되어 있는 경우 발생합니다.
이 조기 경고 표시기(EWI)가 나타나면 JOIN 작업의 시퀀스가 잘못되어 실패할 수 있습니다.
코드 예시¶
입력 코드 Oracle:¶
SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM
hr.countries c, hr.regions r, hr.locations l, hr.departments d WHERE
l.location_id (+) = c.region_id AND
c.region_id (+) = r.region_id AND
r.region_id (+) = c.region_id AND
l.location_id (+) = d.location_id;
출력 코드:¶
SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0087 - ORDERING THE OUTER JOINS FAILED. QUERY MAY NOT BEHAVE CORRECTLY ***/!!!
hr.departments d
LEFT OUTER JOIN
hr.locations l
ON
l.location_id = c.region_id
AND
l.location_id = d.location_id
LEFT OUTER JOIN
hr.countries c
ON
c.region_id = r.region_id
LEFT OUTER JOIN
hr.regions r
ON
r.region_id = c.region_id;
쿼리가 구문적으로 올바른지 확인하고 불필요하게 테이블을 조인하고 있지는 않은지 확인합니다.
문제가 지속되면 WHERE 절에 각 열의 테이블 이름을 지정하십시오(예:
column_name
대신table1.column_name
사용).추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0100¶
심각도¶
낮음
설명¶
Oracle의 FOR LOOP
는 여러 조건을 가질 수 있지만, Snowflake Scripting의 FOR LOOP
는 단일 조건만 지원합니다. Oracle에서 Snowflake로 변환할 때 첫 번째 조건만 마이그레이션되며 추가 조건은 모두 무시됩니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN REVERSE 1 TO 3 LOOP
NULL;
END LOOP;
END;
$$;
권장 사항¶
복잡한
FOR LOOP
문을 여러 개의 간단한 루프로 나누거나 루프 조건을 더 명확하게 다시 작성하십시오.추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0011¶
심각도¶
Medium
설명¶
DATE 또는 TIMESTAMP 형식 내에서 “MONTH” 또는 “DAY”를 사용할 때 Snowflake의 Cast 함수는 형식 매개 변수를 지원하지 않습니다.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Snowflake에서 CAST 함수를 NUMBER 데이터 타입으로 사용하는 경우 소수점 값을 올바르게 표시하려면 4개의 인자를 지정해야 합니다. 현재 출력 코드는 TO_NUMBER 함수의 필수 모든 인자를 제공하지 않습니다. 누락된 인자를 수동으로 추가하여 소수점 형식을 올바르게 지정해야 합니다.
코드 예시¶
입력 코드:¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
출력 코드:¶
SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
입력 코드:¶
SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MONTH/DD/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEBRUARY/18/24' , 'MONTH/DD/YY')
FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MON/DAY/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEB/MON/24' , 'MON/DAY/YY')
FROM DUAL;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0031¶
심각도¶
낮음
설명¶
이 오류는 SYS_CONTEXT 함수에서 지원되지 않는 매개 변수를 사용할 때 발생합니다. 대신 사용할 수 있는 유사한 컨텍스트 함수를 Snowflake에서 제공합니다. 지원되는 컨텍스트 함수에 대한 자세한 내용은 Snowflake 설명서 를 참조하십시오.
코드 예시¶
입력 코드:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
권장 사항¶
이 함수는 사용자 정의 함수(UDF) 템플릿으로 변환되어 SYS_CONTEXT 매개 변수의 동작을 복제하도록 사용자 정의할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0005¶
이 조기 경고 표시기(EWI)는 더 이상 사용되지 않습니다. 최신 설명서는 SSC-FDM-OR0043을 참조하십시오.
심각도¶
낮음
설명¶
이 오류는 TO_CLOB 함수를 TO_VARCHAR 로 변환할 때 발생합니다. BFILE 또는 BLOB 매개 변수로 작업하는 경우 적절한 변환을 위해 형식 매개 변수를 지정해야 할 수 있습니다.
코드 예시¶
입력 코드:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0005 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED ***/!!!
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
권장 사항¶
출력 결과가 소스 코드와 변환된 코드가 일치하는지 확인합니다. 필요한 경우 형식 매개 변수를 추가합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0104¶
심각도¶
높음
설명¶
Oracle 컬렉션은 현재 SnowConvert 에서 지원되지 않습니다. 컬렉션 유형과 관련 작업을 사용하는 모든 변수는 변환된 코드에서 설명이 추가됩니다.
-t JavaScript
플래그 또는 --PLTargetLanguage JavaScript
옵션을 명령에 추가하여JavaScript 에서 프로시저 및 매크로를 생성합니다.
코드 예시¶
입력 코드 Oracle:¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE collection_variable_sample_proc
IS
TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64); --Associative array
city_population POPULATION := POPULATION();
i VARCHAR2(64);
BEGIN
city_population('Smallville') := 2000;
city_population('Midland') := 750000;
i := city_population.FIRST;
i := city_population.NEXT(1);
END;
출력 대구¶
CREATE OR REPLACE PROCEDURE collection_variable_sample_proc ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER TYPE DEFINITION NOT SUPPORTED. ***/!!!
/* TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64) */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population POPULATION := POPULATION() */
;
let I;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population('Smallville') := 2000 */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population('Midland') := 750000 */
;
I =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/*city_population.FIRST*/
null;
I =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/*city_population.NEXT(1)*/
null;
$$;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0070¶
심각도¶
Medium
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
설명¶
이진 작업은 직접 변환할 수 없습니다. 이 문제를 해결하기 위해 사용자 정의 함수를 추가했습니다.
코드 예시¶
Oracle:¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT someValue MULTISET EXCEPT DISTINCT multiset_except FROM customers_demo;
Snowflake Scripting:¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0070 - BINARY OPERATION MULTISET EXCEPT IS NOT SUPPORTED ***/!!!
someValue MULTISET EXCEPT DISTINCT multiset_except FROM
customers_demo;
권장 사항¶
최종 사용자의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0030¶
심각도¶
Medium
설명¶
이 오류는 집계 함수를 사용할 때 첫 번째 또는 마지막 값만 선택하는 데 사용되는 KEEP FIRST 또는 KEEP LAST 절이 현재 지원되지 않는다는 것을 나타냅니다.
코드 예시¶
입력 코드:¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
출력 코드:¶
SELECT
department_id,
MIN(salary)
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0030 - KEEP STATEMENT USED IN THE AGGREGATE FUNCTION IS NOT SUPPORTED ***/!!!
KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0121¶
심각도¶
Medium
설명¶
Oracle BFILE 열을 Snowflake로 마이그레이션하는 경우 파일 이름을 문자열로 저장하는 VARCHAR 열로 변환됩니다. 즉, 마이그레이션된 열에서 Snowflake의 SUBSTR 함수를 사용하면 파일 내용이 아닌 파일 이름 자체에 대해 작업하게 됩니다. 이는 파일의 실제 내용에 대해 작업하는 Oracle의 DBMS_LOB.SUBSTR 함수와 다릅니다. 자세한 내용은 BFILE 데이터 타입을 참조하십시오.
코드 예시¶
입력 코드:¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
출력 코드:¶
CREATE OR REPLACE TABLE table1
(
bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0121 - USING DBMS_LOB.SUBSTR ON BFILE SOURCE COLUMN IS NOT SUPPORTED ON SNOWFLAKE ***/!!!
SUBSTR(bfile_column, 1, 15)
FROM
table1;
권장 사항¶
여기의 설명서를 검토하여 Snowflake에서 파일을 처리하는 방법을 알아보십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0092¶
심각도¶
낮음
설명¶
이 메시지는 반올림을 위해 NUMBER 데이터 타입의 음수 스케일을 사용하려고 할 때 표시됩니다. Snowflake는 음수 스케일을 지원하지 않으므로 변환에서 스케일 매개 변수가 제거되었습니다.
코드 예시¶
입력 코드 Oracle:¶
CREATE TABLE number_table
(
col1 NUMBER(38),
col2 NUMBER(38, -1),
col3 NUMBER(*, -2)
);
INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM number_table;
COL1|COL2|COL3|
-+-+-+
555| 560| 600|
출력 코드:¶
CREATE OR REPLACE TABLE number_table
(
col1 NUMBER(38) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col2 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col3 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** 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 number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM
number_table;
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0004¶
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
설명¶
이 경고는 SELECT 문에 Snowflake가 지원하지 않는 절이 포함된 경우에 표시됩니다. 다음 절은 Snowflake에서 지원되지 않습니다.
데이터를 저장하는 컨테이너 오브젝트
정보 조직화를 위한 계층적 데이터 구조
데이터 원본에 대한 외부 수정
데이터 파티션 또는 세그먼트
코드 예시¶
입력 코드:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
출력 코드:¶
SELECT * FROM
TABLE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0004 - THE 'OPTIONAL MODIFIED EXTERNAL' SYNTAX IN SELECT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0014¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
Medium
설명¶
NLSSORT 함수는 현재 SELECT 문 내에서 사용할 수 없습니다.
코드 예시¶
입력 코드:¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
출력 코드:¶
// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
권장 사항¶
NLSSORT 는 사용자 정의 함수(UDF/Stub)로 변환되며, 이를 사용자 정의하여 동작을 복제할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0105¶
심각도¶
낮음
설명¶
마이그레이션하는 동안 BFILE
데이터 타입은 VARCHAR
로 변환됩니다. 이 변환을 통해 파일 경로와 이름을 저장소에 저장할 수 있습니다. BFILE 유형을 처리하기 위한 Oracle의 기본 제공 함수는 현재 지원되지 않습니다. 파일 경로 및 이름 처리에 대한 자세한 내용은 BFILENAME_UDF
설명서를 참조하십시오.
BUILD_STAGE_FILE_URL
함수는 Snowflake 스테이지에 저장된 파일에 안전하게 액세스할 수 있는 방법을 제공합니다. 호출하면 스테이지에 있는 특정 파일을 가리키는 URL 을 생성합니다. 자세한 내용은 여기의 함수 설명서를 참조하십시오.
코드 예시¶
입력 코드 Oracle:¶
CREATE TABLE bfiletable ( bfile_column BFILE );
INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
출력 코드:¶
CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
권장 사항¶
BUILD_STAGE_FILE_URL
함수 및 기타 파일 함수 를 사용하여 Snowflake에서 파일을 관리하고 조작하십시오.
CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
URL |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
이 함수은 다양한 클라우드 저장소 공급자와 호환됩니다. 로컬 시스템의 파일을 스테이지와 함께 사용하는 방법에 대한 자세한 내용은 이 설명서 를 참조하십시오.
데이터 타입을 대상 시스템과 호환되는 타입으로 변환합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0045¶
심각도¶
Medium
설명¶
이 메시지는 Snowflake에서 사용할 수 없는 FML 또는 L 형식 형변환을 사용하려고 할 때 표시됩니다. 이러한 경우 코드에 설명이 추가되고 이 경고 메시지가 표시됩니다.
코드 예시:¶
입력 코드:¶
SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!!
CAST(' $123.45' as NUMBER(38, 18) , 'L999.99') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!! CAST('$123.45' as NUMBER(38, 18) , 'FML999.99') FROM DUAL;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0082¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
Medium
설명¶
이 오류는 쿼리가 사용자 정의 유형으로 정의된 열 내의 특성에 액세스하려고 할 때 발생합니다. 자동 변환은 불가능하지만 이러한 쿼리는 수동으로 쉽게 변환할 수 있습니다.
코드 예시:¶
입력 코드 Oracle:¶
CREATE TYPE type1 AS OBJECT (
attribute1 VARCHAR2(20),
attribute2 NUMBER
);
CREATE TYPE type2 AS OBJECT (
property1 type1,
property2 DATE
);
CREATE TABLE my_table (
id NUMBER PRIMARY KEY,
column1 type2
);
INSERT INTO my_table VALUES (
1, type2(type1('value1', 100), SYSDATE)
);
SELECT column1.property1.attribute1, column1.property2
FROM my_table;
출력 코드:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type1 AS OBJECT (
attribute1 VARCHAR2(20),
attribute2 NUMBER
)
;
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type2 AS OBJECT (
property1 type1,
property2 DATE
)
;
CREATE OR REPLACE TABLE my_table (
id NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/ PRIMARY KEY,
column1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'type2' USAGE CHANGED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE VIEW PUBLIC.my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
AS
SELECT
id,
column1:property1:attribute1 :: VARCHAR AS attribute1,
column1:property1:attribute2 :: NUMBER AS attribute2,
column1:property2 :: DATE AS property2
FROM
my_table;
INSERT INTO my_table
VALUES (
1, type2(type1('value1', 100) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type1' NODE ***/!!!, CURRENT_TIMESTAMP()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type2' NODE ***/!!!
);
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0082 - CANNOT CONVERT NESTED TYPE ATTRIBUTE EXPRESSION ***/!!! column1.property1.attribute1,
column1.property2
FROM
my_table;
권장 사항¶
코드를 수동으로 수정하려면 유형 열에 액세스할 때 ‘.’(점) 연산자를 ‘:’(콜론)으로 바꾸십시오.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0071¶
심각도¶
낮음
설명¶
Snowflake에서는 ‘모두’ 한정자 사용이 지원되지 않습니다. 코드를 변환할 때 이 수정자가 제거되고 경고 메시지가 생성됩니다. 이 수정으로 인해 코드에서 예기치 않은 동작이 발생할 수 있다는 점에 유의하십시오.
코드 예시¶
입력 코드:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
출력 코드:¶
SELECT location_id FROM
locations
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0071 - QUANTIFIER 'ALL' NOT SUPPORTED FOR THIS SET OPERATOR, RESULTS MAY DIFFER ***/!!!
MINUS
SELECT location_id FROM
departments;
Snowflake에서 INTERSECT 및 MINUS/EXCEPT 연산자는 결과 세트에서 중복된 값을 자동으로 제거합니다.
권장 사항¶
“all” 한정자 기능을 복제하려면 Snowflake에서 대체 방법을 확인하십시오. MINUS ALL
및 EXCEPT ALL
작업의 제한을 해결하는 방법은 다음과 같습니다.
SELECT location_id FROM
(
SELECT location_id, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM locations
MINUS
SELECT number_val, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM departments
);
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0020¶
심각도¶
보통
설명¶
Snowflake의 이 함수 구현은 음수 값을 허용하지 않으므로 실행 시 소스 데이터베이스와 다른 동작이 발생할 수 있습니다.
코드 예시¶
입력 코드:¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
출력 코드:¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
권장 사항¶
음수 값을 입력 변수로 처리할 수 있는 사용자 정의 함수(UDF)를 생성하거나 대체 솔루션을 살펴보십시오.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0051¶
심각도¶
낮음
설명¶
이 경고는 프로시저 내에서 PRAGMA EXCEPTION_INIT 함수를 사용할 때 표시됩니다. 원본 코드에서 예외 이름과 SQL 코드는 RAISE 함수를 사용하여 정의됩니다. Snowflake Scripting으로 변환하는 동안 이러한 SQL 코드는 예외 선언에 포함됩니다. 그러나 이러한 SQL 코드 값 중 일부는 Snowflake Scripting과 호환되지 않을 수 있습니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
NEW_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION;
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF true THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
/
출력 코드:¶
Snowflake script¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
NEW_EXCEPTION EXCEPTION;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION (-20100, '');
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF (true) THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
$$;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0075¶
심각도¶
Medium
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
-t JavaScript
또는 --PLTargetLanguage JavaScript
플래그를 명령에 추가하여 JavaScript 에서 프로시저 및 매크로를 생성합니다.
설명¶
코드 블록의 레이블은 문에서 참조로 사용할 수 없습니다.
코드 예시¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
BEGIN
-- procedure body
EXIT loop_b;
-- procedure body continuation
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
/* ** SSC-EWI-OR0075 - LABELS IN STATEMENTS ARE NOT SUPPORTED. ** */
/* -- procedure body
EXIT loop_b */
// procedure body
;
// procedure body continuation
;
$$;
권장 사항¶
최종 사용자의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0135¶
심각도¶
낮음
설명¶
Snowflake에서 시간 여행 쿼리를 실행할 때 데이터 보존 기간을 벗어난 시간을 지정하면 결과가 나오지 않을 수 있습니다. 자세한 내용은 Snowflake의 Time Travel을 참조하십시오.
코드 예시¶
입력 코드¶
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'SampleName';
출력 코드¶
SELECT * FROM
employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0135 - DATA RETENTION PERIOD MAY PRODUCE NO RESULTS ***/!!!
AT (TIMESTAMP =>
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS'))
WHERE last_name = 'SampleName';
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0101¶
심각도¶
낮음
설명¶
Oracle의 FOR LOOP
에서는 Snowflake Scripting에서 사용할 수 없는 추가 절을 지원합니다. 다음과 같은 오브젝트가 이에 해당합니다.
BY 절: 루프 카운터의 단계 크기를 제어합니다
WHILE 절: 루프를 계속하기 위한 부울 조건을 추가합니다
WHEN 절: 루프를 계속하기 위한 부울 조건을 추가합니다
Oracle 코드를 Snowflake로 변환할 때 이러한 절은 Snowflake Scripting에서 지원되지 않으므로 무시됩니다.
코드 예시¶
입력 코드 Oracle:¶
CREATE OR REPLACE PROCEDURE P2
AS
BEGIN
FOR i IN 1..10 WHILE i <= 5 LOOP
NULL;
END LOOP;
FOR i IN 5..15 BY 5 LOOP
NULL;
END LOOP;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE P2 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 1 TO 10 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 5 TO 15 LOOP
NULL;
END LOOP;
END;
$$;
권장 사항¶
복잡한
FOR LOOP
문을 여러 개의 간단한 루프로 나누거나 루프 조건을 더 명확하게 다시 작성하십시오.추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0010¶
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
심각도¶
중요
설명¶
이 경고는 PARTITION
및 SUBPARTITION
절이 쿼리에 사용될 때 표시됩니다. Snowflake는 데이터 파티션을 자동으로 관리하므로 이러한 절은 필요하지 않습니다.
코드 예시¶
입력 코드:¶
SELECT * FROM table1 PARTITION(col1);
출력 코드:¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
권장 사항¶
Snowflake에서 유사한 기능을 구현하려면
WHERE
절을 수동으로 추가하여 특정 파티션 행을 필터링해야 합니다. 이 해결 방법은 쿼리 성능에 영향을 줄 수 있습니다.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0099¶
심각도¶
낮음
설명¶
이 오류는 예외 선언 번호가 Snowflake Scripting에 허용된 범위를 벗어날 때 발생합니다. 예외 숫자는 -20000~-20999 사이의 정수여야 합니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE procedure_exception ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
my_exception EXCEPTION;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
$$;
권장 사항¶
예외 코드가 Snowflake Scripting의 허용 범위 내에 있는지 확인합니다. 그렇지 않은 경우 사용할 수 있는 다른 예외 번호를 사용하십시오.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0089¶
이 조기 경고 표시기(EWI)는 더 이상 사용되지 않습니다. 최신 설명서는 SSC-FDM-OR0044를 참조하십시오.
심각도¶
낮음
설명¶
이 경고는 일치 매개 변수(세 번째 매개 변수)와 함께 Oracle의 REGEXP_LIKE
함수를 사용할 때 표시됩니다. 이 경고는 Oracle의 REGEXP_LIKE
를 대체하는 Snowflake의 REGEXP_LIKE_UDF
함수가 모든 일치 매개 변수 문자를 지원하지 않을 수 있음을 나타냅니다. 따라서 Snowflake의 쿼리 결과는 Oracle과 다를 수 있습니다.
코드 예시¶
입력 코드 Oracle:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
출력 코드:¶
SELECT last_name
FROM
hr.employees
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0089 - REGEXP_LIKE_UDF MATCH PARAMETER MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE. ***/!!!
PUBLIC.REGEXP_LIKE_UDF(last_name, '([aeiou])\\1', 'i')
ORDER BY last_name;
REGEXP_LIKE
조건에 사용자 정의 함수에 지원되지 않는 문자가 포함된 경우 이러한 문자를 사용하지 않고도 동일한 일치 동작을 수행하도록 정규식을 수정하는 것이 좋습니다. 지원되지 않는 문자에 대한 자세한 내용은 REGEXP_LIKE_UDF 설명서를 참조하십시오.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0128¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
낮음
설명¶
이 메시지는 부울 커서 특성이 지원되지 않거나 동등한 기능이 없기 때문에 SnowScript 에서 사용할 수 없음을 나타냅니다. 아래 테이블에는 SnowScript 에서 복제할 수 있는 부울 커서 특성이 나열되어 있습니다.
| Boolean Cursor Attribute | 상태 | | | - | | %FOUND
| 에뮬레이션 가능 | | %NOTFOUND
| Can be emulated | | %ISOPEN
| 지원되지 않음 |
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record table1%ROWTYPE;
CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_record;
EXIT WHEN my_cursor%NOTFOUND;
is_open_attr := my_cursor%ISOPEN;
found_attr := my_cursor%FOUND;
END LOOP;
CLOSE my_cursor;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
LOOP
--** SSC-PRF-0003 - FETCH INSIDE A LOOP IS CONSIDERED A COMPLEX PATTERN, THIS COULD DEGRADE SNOWFLAKE PERFORMANCE. **
FETCH my_cursor INTO
:my_record;
IF (my_record IS NULL) THEN
EXIT;
END IF;
is_open_attr := null /*my_cursor%ISOPEN*/!!!RESOLVE EWI!!! /*** SSC-EWI-OR0128 - BOOLEAN CURSOR ATTRIBUTE %ISOPEN IS NOT SUPPORTED IN SNOWFLAKE ***/!!!;
found_attr := my_record IS NOT NULL;
END LOOP;
CLOSE my_cursor;
END;
$$;
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0068¶
심각도¶
Medium
설명¶
이 오류는 START WITH
값이 Snowflake의 최대 허용 값보다 클 때 발생합니다. Snowflake 설명서에 따르면 시퀀스 시작 값은 64비트 2의 보수 정수 범위(-2^63
~ 2^63-1
) 내에 있어야 합니다. 구체적으로 허용되는 최대 값은 다음과 같습니다.
양수: 9223372036854775807
음수: 9223372036854775808
코드 예시¶
입력 코드:¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
출력 코드:¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH 9223372036854775808
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
CREATE OR REPLACE SEQUENCE SEQUENCE2
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH -9223372036854775809
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
권장 사항¶
시퀀스를 재설정하고 사용 방법을 조정하는 것이 좋습니다. 참고: 대상 열에 이 값을 저장할 수 있는 충분한 용량이 있는지 확인합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0039¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
낮음
설명¶
이 메시지는 SnowConvert 가 NOCYCLE 절이 포함된 쿼리를 감지할 때 표시되며, 이는 현재 Snowflake에서 지원되지 않습니다.
이 문은 재귀 작업이 발생하는 시점을 나타냅니다.
절 기능에 대한 자세한 내용은 설명서 를 참조하십시오.
코드 예시¶
연결 방법¶
입력 코드:¶
CREATE OR REPLACE FORCE NONEDITIONABLE VIEW VIEW01 AS
SELECT
UNIQUE A.*
FROM
TABLITA A
WHERE
A.X = A.C CONNECT BY NOCYCLE A.C = 0 START WITH A.B = 1
HAVING
X = 1
GROUP BY
A.C;
출력 코드:¶
CREATE OR REPLACE VIEW VIEW01
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
AS
SELECT DISTINCT
A.*
FROM
TABLITA A
WHERE
A.X = A.C
GROUP BY
A.C
HAVING
X = 1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0039 - NOCYCLE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
CONNECT BY
A.C = 0 START WITH A.B = 1;
권장 사항¶
데이터 계층 구조에 주기가 포함된 경우 이 문서 에서 주기를 처리하는 방법에 대한 지침을 참조하십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0029¶
설명¶
Snowflake는 ‘변환 오류 시 기본값’ 기능을 지원하지 않습니다.
코드 예시¶
입력 코드:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
권장 사항¶
ON CONVERSION ERROR
를 처리할 때DEFAULT
값의 기능을 복제하는 사용자 정의 함수(UDF)를 만드는 것이 좋습니다.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0078¶
심각도¶
Medium
설명¶
SnowConvert 가 즉시 실행 명령에 포함된 동적 SQL 문을 구문 분석할 수 없습니다.
-t JavaScript
플래그 또는 --PLTargetLanguage JavaScript
옵션을 명령에 추가하여JavaScript 에서 프로시저 및 매크로를 생성합니다.
코드 예시¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE PROC1 AS
BEGIN
EXECUTE IMMEDIATE 'NOT A VALID SQL STATEMENT';
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE PROC1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
권장 사항¶
동적 SQL 문의 구문이 올바른지 확인합니다.
SnowConvert 설명서를 참조하여 해당 문이 지원되는지 확인하십시오.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0118¶
심각도¶
Medium
설명¶
Oracle에는 Snowflake가 지원하지 않는 기본 제공 뷰 및 테이블 이 포함되어 있습니다. 이러한 요소가 쿼리 또는 문에 사용되는 경우 SnowConvert 에서 오류 메시지를 생성합니다.
코드 예시¶
입력 코드:¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!!
* FROM
ALL_COL_COMMENTS;
SELECT * FROM (SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!! * FROM
ALL_COL_COMMENTS);
권장 사항¶
Snowflake에서 사용할 수 있는 일반적으로 Oracle Built-In 뷰에서 찾을 수 있는 정보는 Information Schema) 또는 SHOW 명령을 통해 사용할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0009¶
심각도¶
높음
설명¶
JSON_TABLE 함수는 현재 이 버전에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT jt.phones
FROM j_purchaseorder,
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR2(100) FORMAT JSON PATH '$.Phone')) AS jt;
출력 코드:¶
SELECT jt.phones
FROM
j_purchaseorder,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0009 - JSON_TABLE IS NOT SUPPORTED ***/!!!
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR(100) FORMAT JSON PATH '$.Phone')) AS jt;
권장 사항¶
Snowflake의 FLATTEN 기능을 JSON_TABLE 기능의 대안으로 사용하십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0108¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
Medium
설명¶
커서, 컬렉션, 레코드 및 사용자 정의 유형과 같은 Oracle 변수 유형은 Snowflake로 직접 변환할 수 없습니다. 또한 현재 Snowflake Scripting은 자리 표시자, 오브젝트 및 출력 매개 변수의 변환을 지원하지 않습니다.
이러한 변수를 Snowflake 반정형 데이터 타입 으로 변환하면 경우에 따라 해결책을 찾을 수 있습니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE pinvalidassign(out_parameter IN OUT NUMBER)
AS
record_variable employees%ROWTYPE;
TYPE cursor_type IS REF CURSOR;
cursor1 cursor_type;
cursor2 SYS_REFCURSOR;
TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
collection_variable collection_type;
BEGIN
--Record Example
record_variable.last_name := 'Ortiz';
--Cursor Example
cursor1 := cursor2;
--Collection
collection_variable('Test') := 5;
--Out Parameter
out_parameter := 123;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter NUMBER(38, 18))
RETURNS VARIANT
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
record_variable OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL REF CURSOR TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE cursor_type IS REF CURSOR;
cursor1_res RESULTSET;
cursor2_res RESULTSET;
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
collection_variable VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'collection_type' USAGE CHANGED TO VARIANT ***/!!!;
BEGIN
--Record Example
record_variable := OBJECT_INSERT(record_variable, 'LAST_NAME', 'Ortiz', true);
--Cursor Example
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
cursor1 := :cursor2;
--Collection
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
collection_variable('Test') := 5;
--Out Parameter
out_parameter := 123;
RETURN out_parameter;
END;
$$;
권장 사항¶
변수 데이터 타입을 변경하거나 Snowflake의 반정형 데이터 타입 을 사용하여 원하는 동작을 복제하는 것을 고려해 보십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0008¶
심각도¶
낮음
설명¶
이 오류는 시스템이 인식할 수 없는 날짜 형식을 발견할 때 발생하며, 이로 인해 예기치 않은 결과가 발생할 수 있습니다.
코드 예시¶
입력 코드:¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
참고: 날짜 형식 ‘iw-iyyy’는 지원되지 않습니다.
권장 사항¶
지원되는 타임스탬프 형식 목록은 설명서 를 참조하십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0109¶
심각도¶
Medium
설명¶
이 기능을 사용할 수 있는 Oracle과 달리 Snowflake Scripting은 EXECUTE IMMEDIATE 문의 USING 절에서 식을 인자로 사용하는 기능을 지원하지 않습니다.
Snowflake Scripting은 변수 식을 지원합니다. 아래 예시와 같이 식을 변수에 수동으로 할당하여 식을 바꿀 수 있습니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE expression_arguments
IS
immediate_input INTEGER := 0;
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO immediate_table VALUES (:value)' USING immediate_input+1;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
immediate_input INTEGER := 0;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
EXECUTE IMMEDIATE 'INSERT INTO immediate_table
VALUES (?)' USING (
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0109 - EXPRESSIONS AS ARGUMENTS OF USING CLAUSE IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
:immediate_input +1);
END;
$$;
수동으로 마이그레이션한 즉시 실행 프로시저:¶
Oracle과 동일한 결과를 유지하면서 컴파일 오류를 해결하려면 위에서 설명한 프로시저를 사용하십시오.
CREATE OR REPLACE PROCEDURE PUBLIC.expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
immediate_input INTEGER := 0;
using_argument_variable INTEGER;
BEGIN
using_argument_variable := immediate_input+1;
EXECUTE IMMEDIATE 'INSERT INTO PUBLIC.immediate_table VALUES (?)' USING (using_argument_variable );
END;
$$;
권장 사항¶
프로시저를 수동으로 마이그레이션하려면 변수를 생성하고 식을 할당합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0049¶
심각도¶
중요
예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.
설명¶
이 경고는 지원되지 않는 상태 저장 패키지의 멤버를 사용하려고 할 때 표시됩니다.
이 기능은 향후 릴리스에서 사용할 수 있습니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
출력 코드:¶
CREATE SCHEMA IF NOT EXISTS MY_PACKAGE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0049 - PACKAGE TYPE DEFINITIONS in stateful package MY_PACKAGE are not supported yet ***/!!!
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0129¶
심각도¶
낮음
예제를 더 명확하게 하기 위해 코드 출력의 일부가 제거되었습니다.
설명¶
이 경고는 참조된 TYPE
특성을 찾을 수 없어 시스템에서 항목의 데이터 타입을 확인할 수 없을 때 표시됩니다. 이러한 경우 시스템은 자동으로 VARIANT
데이터 타입을 항목에 할당합니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE procedure01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0129 - TYPE ATTRIBUTE 'table01.col1%TYPE' COULD NOT BE RESOLVED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
BEGIN
NULL;
END;
$$;
권장 사항¶
참조 항목의 데이터 타입을 수동으로 확인하고 그에 따라 참조 항목의 TYPE 특성을 업데이트합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0069¶
심각도¶
Medium
설명¶
Snowflake는 시퀀스에 대한 CURRVAL 속성을 지원하지 않습니다.
코드 예시¶
Oracle:¶
select seq1.currval from dual;
Snowflake Scripting:¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
seq1.currval from dual;
권장 사항¶
CURRVAL 속성과 관련된 시나리오 처리에 대한 지침은 Snowflake의 설명서 를 참조하십시오.
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0038¶
심각도¶
낮음
설명¶
search_clause
는 순서를 정의하여 SELECT 문에서 행을 처리하는 방법을 제어합니다. 이 기능을 사용하면 Oracle에서 데이터를 트래버스하고 반환하는 방법을 지정할 수 있지만, Snowflake에서는 이 기능을 사용할 수 없습니다.
Oracle 및 유사 데이터베이스에서 search_clause
는 재귀 쿼리 또는 공통 테이블 식(CTEs)에서 계층적 데이터 처리 방식을 제어하는 데 도움이 됩니다. search_clause
에서 열을 지정할 때 행 처리 순서를 결정하는 깊이 우선 또는 폭 우선 탐색 방법 중 하나를 선택할 수 있습니다.
Snowflake에서는 search_clause
메시지가 생성된 후 제거됩니다.
코드 예시¶
입력 코드:¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(SELECT aValue from atable) SEARCH DEPTH FIRST BY hire_date SET order1 SELECT aValue from atable;
출력 코드:¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(
SELECT aValue from
atable
) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0038 - SEARCH CLAUSE REMOVED FROM THE WITH ELEMENT STATEMENT ***/!!!
SELECT aValue from
atable;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0033¶
심각도¶
Medium
설명¶
PL/SQL 변수 선언은 현재 WITH 절 내에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
WITH FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from aTable;
출력 코드:¶
// SnowConvert Helpers Code section is omitted.
WITH
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0033 - PLDECLARATION IN WITH NOT SUPPORTED ***/!!!
FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from
aTable;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0007¶
설명¶
이 메시지는 Snowflake가 지원하지 않는 Create Type 문을 사용하려고 할 때 표시됩니다.
코드 예시¶
입력 코드(Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
출력 코드:¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0116¶
심각도¶
Medium
예제를 더 명확하게 하기 위해 출력 코드의 일부가 제거되었습니다.
설명¶
이 오류는 간격으로만 산술 연산을 수행하려고 할 때 발생합니다. Snowflake는 두 간격 값 사이의 계산을 지원하지 않습니다.
코드 예시¶
입력 코드:¶
SELECT INTERVAL '1-1' YEAR(2) TO MONTH + INTERVAL '1-1' YEAR(2) + INTERVAL '1-1' YEAR(2) TO MONTH FROM dual;
SELECT INTERVALCOLUMN + INTERVAL '1-1' YEAR(2) TO MONTH FROM INTERVALTABLE;
출력 코드:¶
SELECT
--INTERVAL '1-1 year' + INTERVAL '1y, 1mm' + INTERVAL '1y, 1mm'
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0116 - OPERATIONS BETWEEN INTERVALS ARE NOT SUPPORTED BY SNOWFLAKE ***/!!!
null
FROM dual;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Unknown AND Interval ***/!!! INTERVALCOLUMN + INTERVAL '1y, 1mm'
FROM
INTERVALTABLE;
권장 사항¶
작업의 타이밍이 문제를 일으키는 경우 적절한 위치에 날짜 또는 타임스탬프를 추가하여 문제를 수정할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0046¶
이 경고는 더 이상 사용되지 않습니다. 최신 설명서는 SSC-EWI-0109를 참조하십시오.
심각도¶
Medium
설명¶
테이블 변경 명령이 Snowflake의 구문과 호환되지 않는 경우 코드가 주석 처리되고 이 알림이 주석으로 추가됩니다.
코드 예시:¶
입력 코드:¶
ALTER TABLE SOMENAME DEFAULT COLLATION SOMENAME;
ALTER TABLE SOMENAME ROW ARCHIVAL;
ALTER TABLE SOMENAME MODIFY CLUSTERING;
ALTER TABLE SOMENAME DROP CLUSTERING;
ALTER TABLE SOMENAME SHRINK SPACE COMPACT CASCADE;
출력 코드:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
DEFAULT COLLATION SOMENAME;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
ROW ARCHIVAL;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
MODIFY CLUSTERING;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
DROP CLUSTERING;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
SHRINK SPACE COMPACT CASCADE;
권장 사항¶
사용자 측에서는 추가 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0023¶
심각도¶
높음
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
설명¶
이 오류는 집계 함수를 사용할 때 발생합니다
DENSE_RANK(): 파티션 내의 각 행에 순위를 할당하며, 동점자가 있을 때 순위 시퀀스에 공백이 생기지 않도록 합니다
RANK(): 파티션 내의 각 행에 순위를 할당하고, 동점자가 있을 경우 순위 시퀀스에 간격을 둡니다
PERCENT_RANK(): 파티션 내 행의 상대적 순위를 백분율(0~1)로 계산합니다
CUME_DIST(): 파티션 내 값의 누적 분포(0~1)를 계산합니다
는 Snowflake에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - DENSE_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - PERCENT_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - CUME_DIST AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0072¶
심각도¶
Medium
예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.
-t JavaScript
또는 --PLTargetLanguage JavaScript
플래그를 명령에 추가하여 JavaScript 에서 프로시저 및 매크로를 생성합니다.
설명¶
프로시저 멤버는 현재 이 버전에서 지원되지 않습니다. 다음은 프로시저 멤버의 의미에 대한 예시입니다.
코드에 정의된 상수
데이터 검색에 사용되는 데이터베이스 커서
컴파일러 동작을 제어하는 Pragma 문
코드에 정의된 변수
코드 예시¶
Oracle:¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
NULL;
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0052¶
심각도¶
낮음
예제를 명확하고 간결하게 유지하기 위해 코드 출력의 일부가 제거되었습니다.
-t JavaScript
플래그 또는 --PLTargetLanguage JavaScript
옵션을 명령에 추가하여JavaScript 에서 프로시저 및 매크로를 생성합니다.
설명¶
Oracle과 Snowflake 모두 예외가 있습니다. 그러나 RAISE 함수는 오류 선언, 할당 및 throw라는 세 가지 작업을 모두 처리합니다. 그렇기 때문에 예외 선언이 설명으로 표시되고 경고 메시지가 생성됩니다.
코드 예시¶
입력 코드:¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
NEW_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
BEGIN
IF true THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'PlInvokerRightsClause' NODE ***/!!!
//AUTHID DEFINER
null
// SnowConvert Helpers Code section is omitted.
try {
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0052 - EXCEPTION DECLARATION IS HANDLED BY RAISE FUNCTION ***/!!!
/* NEW_EXCEPTION EXCEPTION */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
/* PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63) */
;
if (true) {
RAISE(-63,`NEW_EXCEPTION`,`NEW_EXCEPTION`);
}
} catch(error) {
switch(error.name) {
case `NEW_EXCEPTION`: {
break;
}
default: {
throw error;
break;
}
}
}
//Handle Exceptions
;
$$;
가독성을 높이기 위해 출력 코드의 일부 섹션을 생략했습니다.
권장 사항¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0095¶
심각도¶
낮음
설명¶
INTERVAL YEAR TO MONTH
및 INTERVAL DAY TO SECOND
데이터 타입은 지원되지 않으므로 VARCHAR(20)
으로 변환됩니다. 따라서 날짜 유형 과 원래 간격 유형 인 열 간에 산술 작업을 수행할 수 없습니다.
또한 간격 유형과 날짜 유형 사이에서 작업을 수행할 때(특히 해당 시퀀스에서) Snowflake는 이러한 작업을 지원하지 않으며 EWI 메시지를 생성합니다.
코드 예시¶
입력 코드:¶
CREATE TABLE table_with_intervals
(
date_col DATE,
time_col TIMESTAMP,
intervalYearToMonth_col INTERVAL YEAR TO MONTH,
intervalDayToSecond_col INTERVAL DAY TO SECOND
);
-- Date + Interval Y to M
SELECT date_col + intervalYearToMonth_col FROM table_with_intervals;
-- Date - Interval D to S
SELECT date_col - intervalDayToSecond_col FROM table_with_intervals;
-- Timestamp + Interval D to S
SELECT time_col + intervalDayToSecond_col FROM table_with_intervals;
-- Timestamp - Interval Y to M
SELECT time_col - intervalYearToMonth_col FROM table_with_intervals;
출력 코드:¶
CREATE OR REPLACE TABLE table_with_intervals
(
date_col TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
time_col TIMESTAMP(6),
intervalYearToMonth_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR TO MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!!,
intervalDayToSecond_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY TO SECOND DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
-- Date + Interval Y to M
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col + intervalYearToMonth_col FROM
table_with_intervals;
-- Date - Interval D to S
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col - intervalDayToSecond_col FROM
table_with_intervals;
-- Timestamp + Interval D to S
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col + intervalDayToSecond_col FROM
table_with_intervals;
-- Timestamp - Interval Y to M
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col - intervalYearToMonth_col FROM
table_with_intervals;
권장 사항¶
Oracle의 기능을 복제하는 사용자 정의 함수(UDF)을 만듭니다.
마이그레이션 중에 열에 저장된 변환된 값이 있는 경우 Snowflake 간격 상수로 사용합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
¶
SSC-EWI-OR0126¶
심각도¶
Medium
설명¶
이 오류는 시스템에 사용자 정의 데이터 타입이 내장된 오브젝트를 사용하려고 할 때 발생합니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE proc01 is
var1 DBMS_SQL.VARCHAR2_TABLE;
var2 CTX_CLS.DOC_TAB;
BEGIN
varX := var1.property;
varY := var2(1);
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE proc01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'DBMS_SQL.VARCHAR2_TABLE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
var2 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'CTX_CLS.DOC_TAB' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
BEGIN
varX := var1.property !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var1, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
varY := var2(1) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var2, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
END;
$$;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0076¶
심각도¶
Medium
설명¶
기본 제공 패키지 변환은 현재 사용할 수 없습니다.
코드 예시¶
입력 코드(Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS CAST_TO_RAW,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_UTILITY.GET_TIME' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS GET_TIME
FROM DUAL;
권장 사항¶
사용자의 작업이 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0136¶
심각도¶
중요
설명¶
Snowflake는 현재 UPDATE 및 DELETE 문의 WHERE 절 내의 CURRENT OF 절을 지원하지 않습니다.
코드 예시¶
Oracle:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of
AS
CURSOR C1
IS
SELECT * FROM F_EMPLOYEE FOR UPDATE OF SALARY nowait;
BEGIN
FOR CREC IN C1
LOOP
UPDATE F_EMPLOYEE SET SALARY=SALARY+2000 WHERE CURRENT OF C1;
END LOOP;
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
C1 CURSOR
FOR
SELECT * FROM
F_EMPLOYEE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF SALARY nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE F_EMPLOYEE
SET SALARY=
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!SALARY+2000 WHERE CURRENT OF C1;
END FOR;
CLOSE C1;
END;
$$;
관련 EWI¶
SSC-EWI-OR0036: 경고: 문자열과 날짜 데이터 타입 간의 산술 작업은 예기치 않은 결과를 생성할 수 있습니다.
SSC-PRF-0004: 이 코드에는 성능에 영향을 줄 수 있는 커서 기반 루프가 포함되어 있습니다.
SSC-EWI-OR0110: FOR UPDATE 절은 현재 Snowflake에서 지원되지 않습니다.
권장 사항¶
표준
UPDATE
또는DELETE
문을 사용하여 쿼리를 다시 작성합니다.WHERE
절에 특정 열 조건을 포함하십시오. 테이블에 중복 레코드가 포함된 경우 쿼리가 이러한 레코드에 여러 번 영향을 미칠 수 있다는 점에 유의하십시오.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0013¶
심각도¶
Medium
설명¶
NLS (국가 언어 지원) 매개 변수는 현재 다음 함수에 대해 지원되지 않습니다.
값을 문자 문자열로 변환(TOCHAR)
값을 날짜로 변환(TODATE)
값을 숫자로 변환(TONUMBER)
값을 타임스탬프로 변환(TOTIMESTAMP)
값을 지정된 데이터 타입으로 변환(CAST)
코드 예시¶
입력 코드:¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0013 - NLS PARAMETER ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''' NOT SUPPORTED ***/!!!
TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
권장 사항¶
TO_NUMBER 함수는 사용자 정의 함수(UDF/Stub)로 변환되어 특정 매개 변수 요구 사항에 따라 동작을 사용자 정의할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0042¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
낮음
설명¶
이 메시지는 SnowConvert 가 MODEL 절이 포함된 쿼리를 감지할 때 표시되며, 이는 현재 Snowflake에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
출력 코드:¶
SELECT
employee_id,
salary
FROM
employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0042 - MODEL CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0053¶
심각도¶
Medium
설명¶
이 오류는 잘못된 입력 형식을 사용하여 데이터를 형 변환하려고 할 때 발생합니다. 그 결과 코드에 설명이 추가되고 이 메시지가 표시됩니다.
코드 예시:¶
입력 코드:¶
SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12sdsd3,456E+40' ***/!!!
CAST('12sdsd3,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12345sdsd' ***/!!! CAST('12345sdsd' AS NUMBER(38, 18) , '99999') FROM DUAL;
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0002¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
높음
설명¶
이 오류는 시스템이 선택 식의 열을 확인할 수 없을 때 발생합니다. 이는 일반적으로 두 가지 시나리오에서 발생합니다.
해결되지 않은 타입 액세스를 참조하는 경우
열 정의가 없는 사용자 정의 유형(예: 본문이 없는 유형 또는 빈 오브젝트 유형)에서 열에 액세스하려고 할 때
코드 예시¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
unknownTable_variable_rowtype OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
BEGIN
INSERT INTO MyTable
SELECT
null !!!RESOLVE EWI!!! /*** SSC-EWI-OR0002 - COLUMNS FROM EXPRESSION unknownTable%ROWTYPE NOT FOUND ***/!!!;
END;
$$;
권장 사항¶
참조된 유형 정의에 열 정의가 포함되어 있는지 확인합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0036¶
심각도¶
낮음
설명¶
이 오류는 호환되지 않는 두 가지 데이터 타입이 산술 작업에 사용되어 예기치 않은 결과를 초래할 수 있는 경우 발생합니다.
코드 예시¶
입력 코드:¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
출력 코드:¶
SELECT
CURRENT_TIMESTAMP(),
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
CURRENT_TIMESTAMP() + '1',
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
CURRENT_TIMESTAMP() + 'A'
from
dual;
문자열과 날짜 데이터 타입 간에 작업을 수행할 때는 결과가 예상치 못한 결과가 나오거나 부정확할 수 있다는 점에 유의하십시오. 날짜 관련 작업을 수행하기 전에 문자열을 날짜 유형으로 변환하는 것이 좋습니다.
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0067¶
심각도¶
보통
예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.
설명¶
Snowflake에서는 단일 ALTER TABLE 문에 여러 제약 조건을 정의할 수 없습니다.
코드 예시¶
Oracle:¶
ALTER TABLE TABLE1 ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID)
ENABLE VALIDATE,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
Snowflake Scripting:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0067 - MULTIPLE CONSTRAINT DEFINITION IN A SINGLE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE TABLE1
ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID) ,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
권장 사항¶
최종 사용자의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0026¶
예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.
심각도¶
Medium
설명¶
ROWID 문은 현재 이 버전에서 지원되지 않습니다.
코드 예시¶
Oracle:¶
SELECT QUERY_NAME.ROWID from TABLE1;
Snowflake Scripting:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
QUERY_NAME.ROWID from
TABLE1;
권장 사항¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0103¶
심각도¶
높음
설명¶
Snowflake 스크립팅은 Oracle에 비해 FOR LOOP
문에 대한 지원이 제한되어 있습니다. Oracle은 여러 조건 유형(예: 부울 식, 컬렉션, 레코드)을 지원하지만, Snowflake는 정수 범위를 바운드로 사용하는 FOR LOOP
만 허용합니다. 다른 루프 형식은 지원되지 않는 것으로 표시되며 수동으로 변환해야 합니다.
Snowflake의 FOR LOOP
에서 지원하지 않는 Oracle 반복 제어 절:
single_expression_control
: 단일 식을 평가합니다values_of_control
: 컬렉션의 개별 값을 처리합니다indices_of_control
: 배열 인덱스를 반복합니다pairs_of_control
: 컬렉션의 키-값 페어를 처리합니다
cursor_iteration_control
기능은 현재 지원되지 않습니다. 그러나 식에서 괄호를 제거하여 CURSOR FOR LOOP 로 변환할 수 있습니다.
FOR i IN (cursor_variable) LOOP NULL; END LOOP;
다음으로 변경해야 함:
FOR i IN cursor_variable LOOP NULL; END LOOP;
코드 예시¶
입력 코드 Oracle:¶
CREATE OR REPLACE PROCEDURE P3
AS
TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
l_employee_values values_aat;
BEGIN
FOR power IN REPEAT power*2 WHILE power <= 64 LOOP
NULL;
END LOOP;
FOR i IN VALUES OF l_employee_values LOOP
NULL;
END LOOP;
END;
출력 코드:¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
l_employee_values VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'values_aat' USAGE CHANGED TO VARIANT ***/!!!;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR power IN REPEAT power*2 WHILE power <= 64 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN VALUES OF :l_employee_values LOOP
NULL;
END LOOP;
END;
$$;
권장 사항¶
FOR LOOP
조건을 수정하거나 대체LOOP
유형을 선택하여 동일한 결과를 얻을 수 있습니다.추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0090¶
심각도¶
Medium
이해하기 쉽도록 코드 출력의 일부가 제거되었습니다.
설명¶
이 오류는 여러 테이블이 포함된 BETWEEN 절 내에 (+) 연산자와 함께 Oracle 스타일 OUTER JOIN 을 사용할 때 발생합니다. Snowflake는 이 특정 구문 조합을 지원하지 않습니다. 이 문제는 BETWEEN 절이 다른 테이블의 열을 참조할 때 특히 발생합니다.
코드 예시¶
입력 코드 Oracle:¶
SELECT
*
FROM
hr.countries c, hr.regions r, hr.locations l WHERE
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
출력 코드:¶
SELECT
*
FROM
hr.countries c,
hr.regions r,
hr.locations l WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0090 - INVALID NON-ANSI OUTER JOIN BETWEEN PREDICATE CASE FOR SNOWFLAKE. ***/!!!
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
권장 사항¶
외부 조인을 ANSI 구문으로 수동으로 변환합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0123¶
심각도¶
Medium
설명¶
Snowflake는 데이터베이스 링크를 지원하지 않으므로 오브젝트 이름에서 데이터베이스 링크 참조가 제거되었습니다. @
기호 앞의 이름 부분만 유지됩니다.
코드 예시¶
입력 코드:¶
-- Creation of the database link
CREATE DATABASE LINK mylink
CONNECT TO user1 IDENTIFIED BY password1
USING 'connection_str';
-- Statements that use the database link we created
SELECT * FROM employees@mylink;
INSERT INTO employees@mylink
(employee_id, last_name, email, hire_date, job_id)
VALUES (999, 'Claus', 'sclaus@oracle.com', SYSDATE, 'SH_CLERK');
UPDATE employees@mylink SET min_salary = 3000
WHERE job_id = 'SH_CLERK';
DELETE FROM employees@mylink
WHERE employee_id = 999;
출력 코드:¶
- Creation of the database link
-** SSC-OOS - OUT OF SCOPE CODE UNIT. CREATE DATABASE LINK IS OUT OF TRANSLATION SCOPE. **
--CREATE DATABASE LINK mylink
-- CONNECT TO user1 IDENTIFIED BY password1
-- USING 'connection_str'
-- Statements that use the database link we created
SELECT * FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees;
INSERT INTO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
(employee_id, last_name, email, hire_date, job_id)
VALUES (999, 'Claus', 'sclaus@oracle.com', CURRENT_TIMESTAMP(), 'SH_CLERK');
UPDATE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
SET min_salary = 3000
WHERE job_id = 'SH_CLERK';
DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
WHERE employee_id = 999;
권장 사항¶
모든 데이터베이스 링크에 고유한 이름이 있는지 확인합니다. 여러 데이터베이스 링크가 동일한 이름을 공유하고 코드가 여러 번 마이그레이션되는 경우 외부 웹 인터페이스(EWI)는 먼저 처리되는 데이터베이스 링크에 따라 정보를 잘못 처리할 수 있습니다.
데이터베이스 링크에서 참조하는 데이터베이스 오브젝트를 사용 중인 동일한 Snowflake 데이터베이스 인스턴스로 재배치합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0032¶
심각도¶
Medium
설명¶
이 오류는 함수에서 지원되지 않는 매개 변수를 사용하려고 할 때 발생합니다.
코드 예시¶
입력 코드:¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0032 - PARAMETER USED IN THE FUNCTION 'TO_CHAR' WITH FORMAT AM IS NOT SUPPORTED ***/!!!
TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
권장 사항¶
함수는 사용자 정의 함수(UDF) 템플릿으로 변환되어 매개 변수의 동작에 맞게 사용자 정의할 수 있습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0006¶
이 조기 경고 표시기(EWI)는 더 이상 사용되지 않습니다. 최신 정보는 SSC-FDM-OR0047 설명서를 참조하십시오.
심각도¶
낮음
설명¶
TIMESTAMP_OUTPUT_FORMAT 세션 매개 변수를 ‘DD-MON-YY HH24.MI.SS.FF AM TZH:TZM’으로 설정하여 타임스탬프가 올바른 형식으로 표시되고 시스템 간에 동등성을 유지하도록 해야 합니다.
코드 예시¶
입력 코드:¶
SELECT SYSTIMESTAMP FROM DUAL;
Oracle의 기본 TIMESTAMP 출력 예시¶
January 13, 2021 04:18:37.288656 PM UTC
출력 코드:¶
SELECT
CURRENT_TIMESTAMP() !!!RESOLVE EWI!!! /*** SSC-EWI-OR0006 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/!!!
FROM DUAL;
Snowflake에서 기본 TIMESTAMP 출력의 예¶
2021-01-13 08:18:19.720 -080
권장 사항¶
Snowflake에서 타임스탬프가 표시되는 방식을 수정하려면 이 쿼리를 실행합니다.
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0057¶
심각도¶
중요
이해하기 쉽도록 코드 출력의 일부가 제거되었습니다.
설명¶
중첩된 프로시저 또는 함수(다른 프로시저/함수 안에 정의된 프로시저/함수)는 현재 변환할 수 없습니다. 이 기능은 향후 릴리스에서 사용할 수 있습니다.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
FUNCTION FOO2 return integer;
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
출력 코드:¶
--** SSC-FDM-0029 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE **
!!!RESOLVE EWI!!! /*** SSC-EWI-0046 - NESTED FUNCTION/PROCEDURE DECLARATIONS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!!
CREATE OR REPLACE PROCEDURE FOO1 ()
RETURNS INTEGER
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 return integer;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
$$;
권장 사항¶
최종 사용자의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0047¶
심각도¶
낮음
예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.
설명¶
이 경고는 마이그레이션 프로세스 중에 Oracle TO_NCHAR
함수가 Snowflake의 TO_VARCHAR
함수로 변환된 경우에 표시됩니다.
코드 변환으로 인해 컴파일 오류가 발생하거나 원본과 다른 예기치 않은 출력이 생성되는 경우가 있을 수 있습니다.
코드 예시¶
입력 코드:¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
출력 코드:¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(),'DY','nls_date_language=english') from dual;
앞서 표시된 코드는 Snowflake에서 실행할 때 오류가 발생합니다.
모든 시나리오에서 오류가 발생하는 것은 아닙니다.
입력 코드:¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
출력 코드:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(), 'YYYY-MM-DD') FROM dual;
마지막 예제는 Snowflake에서 성공적으로 실행되며 실행 시 동일한 출력을 생성합니다.
권장 사항¶
사용자 측의 작업은 필요하지 않습니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0016¶
심각도¶
Medium
설명¶
아래 목록에 있는 XML 함수는 현재 지원되지 않습니다.
EXTRACT 함수는 XML 문서에서 데이터를 검색합니다
EXTRACTVALUE 는 XML 요소에서 특정 값을 검색합니다
XMLSEQUENCE 는 XML 데이터를 테이블 형식으로 변환합니다
XMLTYPE 은 XML 내용을 저장하기 위한 데이터 타입을 정의합니다
코드 예시¶
입력 코드:¶
select * from table(XMLSequence(XMLType('
<Product ProductCode="200">
<BrandName>Notebook</BrandName>
<ProductList>
<Item ItemNo="200A"><Price>900</Price></Item>
<Item ItemNo="200B"><Price>700</Price></Item>
<Item ItemNo="200C"><Price>650</Price></Item>
<Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
출력 코드:¶
select * from table(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!
XMLSequence(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!XMLType('
<Product ProductCode="200">
<BrandName>Notebook</BrandName>
<ProductList>
<Item ItemNo="200A"><Price>900</Price></Item>
<Item ItemNo="200B"><Price>700</Price></Item>
<Item ItemNo="200C"><Price>650</Price></Item>
<Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-OR0133¶
심각도¶
Medium
설명¶
OPEN FOR
문을 변환할 때 SC 는 원래 커서 변수와 동일한 이름을 사용하여 커서 할당을 생성하고 동작을 복제하는 추가 문을 생성합니다. 그러나 원본 코드에 동일한 커서 변수를 사용하는 OPEN FOR
문이 여러 개 포함되어 있는 경우 변환된 코드에는 동일한 이름의 커서가 여러 개 할당됩니다. 이로 인해 Snowflake에서 컴파일 오류가 발생합니다.
코드 예시¶
입력 코드¶
CREATE OR REPLACE PROCEDURE open_for_procedure
AS
query1 VARCHAR(200) := 'SELECT 123 FROM dual';
query2 VARCHAR(200) := 'SELECT 456 FROM dual';
my_cursor_variable SYS_REFCURSOR;
BEGIN
OPEN my_cursor_variable FOR query1;
OPEN my_cursor_variable FOR query2;
END;
출력 코드¶
CREATE OR REPLACE PROCEDURE open_for_procedure ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
query1 VARCHAR(200) := 'SELECT 123 FROM dual';
query2 VARCHAR(200) := 'SELECT 456 FROM dual';
my_cursor_variable_res RESULTSET;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
my_cursor_variable_res := (
EXECUTE IMMEDIATE :query1
);
LET my_cursor_variable CURSOR
FOR
my_cursor_variable_res;
OPEN my_cursor_variable;
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
my_cursor_variable_res := (
EXECUTE IMMEDIATE :query2
);
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0133 - THE CURSOR VARIABLE NAMED 'my_cursor_variable' HAS ALREADY BEEN ASSIGNED IN ANOTHER CURSOR ***/!!!
LET my_cursor_variable CURSOR
FOR
my_cursor_variable_res;
OPEN my_cursor_variable;
END;
$$;
관련 EWI¶
SSC-EWI-0030: 다음 문에서 동적 SQL 이 감지되었습니다.
권장 사항¶
출력 코드의 컴파일 오류를 수정하려면 SSC-EWI-OR0133 경고 메시지를 표시하는 커서 할당의 이름을 변경하십시오.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.