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 데이터베이스는:

  1. 테이블 잠그기

  2. 다음 중 하나 찾기:

    • 최대 ID 열 값(시퀀스 증가 시)

    • 최소 ID 열 값(시퀀스 감소 시)

  3. 이 값을 시퀀스 생성기의 하이 워터 마크로 설정합니다

  4. 다음 시퀀스 값을 계산합니다.

    • 증가하는 시퀀스의 경우: 하이 워터 마크 + INCREMENT BY 정수

    • 감소하는 시퀀스의 경우: 하이 워터 마크 - INCREMENT BY 정수

ALTER TABLE ORACLE

코드 예시

입력 코드:

CREATE SEQUENCE SEQUENCE1
  START WITH LIMIT VALUE;
Copy

출력 코드:

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"}}';
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 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;
Copy

출력 코드:

// 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;
Copy

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy
  • 쿼리가 구문적으로 올바른지 확인하고 불필요하게 테이블을 조인하고 있지는 않은지 확인합니다.

  • 문제가 지속되면 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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 복잡한 FOR LOOP 문을 여러 개의 간단한 루프로 나누거나 루프 조건을 더 명확하게 다시 작성하십시오.

  • 추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0011

심각도

Medium

설명

DATE 또는 TIMESTAMP 형식 내에서 “MONTH” 또는 “DAY”를 사용할 때 Snowflake의 Cast 함수는 형식 매개 변수를 지원하지 않습니다.

"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Copy

Snowflake에서 CAST 함수를 NUMBER 데이터 타입으로 사용하는 경우 소수점 값을 올바르게 표시하려면 4개의 인자를 지정해야 합니다. 현재 출력 코드는 TO_NUMBER 함수의 필수 모든 인자를 제공하지 않습니다. 누락된 인자를 수동으로 추가하여 소수점 형식을 올바르게 지정해야 합니다.

코드 예시

입력 코드:

SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Copy

출력 코드:

SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Copy

입력 코드:

SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
Copy

출력 코드:

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;
Copy

권장 사항

SSC-EWI-OR0031

심각도

낮음

설명

이 오류는 SYS_CONTEXT 함수에서 지원되지 않는 매개 변수를 사용할 때 발생합니다. 대신 사용할 수 있는 유사한 컨텍스트 함수를 Snowflake에서 제공합니다. 지원되는 컨텍스트 함수에 대한 자세한 내용은 Snowflake 설명서 를 참조하십시오.

코드 예시

입력 코드:

SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy

출력 코드:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
 SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy

권장 사항

  • 이 함수는 사용자 정의 함수(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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 출력 결과가 소스 코드와 변환된 코드가 일치하는지 확인합니다. 필요한 경우 형식 매개 변수를 추가합니다.

  • 추가 지원이 필요하면 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;
Copy

출력 대구

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;
$$;
Copy

권장 사항

SSC-EWI-OR0070

심각도

Medium

예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.

설명

이진 작업은 직접 변환할 수 없습니다. 이 문제를 해결하기 위해 사용자 정의 함수를 추가했습니다.

코드 예시

Oracle:

-- Unsupported operation: EXCEPT DISTINCT
SELECT someValue MULTISET EXCEPT DISTINCT multiset_except FROM customers_demo;
Copy

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;
Copy

권장 사항

SSC-EWI-OR0030

심각도

Medium

설명

이 오류는 집계 함수를 사용할 때 첫 번째 또는 마지막 값만 선택하는 데 사용되는 KEEP FIRST 또는 KEEP LAST 절이 현재 지원되지 않는다는 것을 나타냅니다.

코드 예시

입력 코드:

SELECT
    department_id,
    MIN(salary) KEEP (
        DENSE_RANK FIRST
        ORDER BY
            commission_pct
    ) "Worst"
FROM
    employees;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 여기의 설명서를 검토하여 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;
Copy
COL1|COL2|COL3|
-+-+-+
 555| 560| 600|
Copy

출력 코드:

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;
Copy
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
Copy

권장 사항

SSC-EWI-OR0004

예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.

설명

이 경고는 SELECT 문에 Snowflake가 지원하지 않는 절이 포함된 경우에 표시됩니다. 다음 절은 Snowflake에서 지원되지 않습니다.

  • 데이터를 저장하는 컨테이너 오브젝트

  • 정보 조직화를 위한 계층적 데이터 구조

  • 데이터 원본에 대한 외부 수정

  • 데이터 파티션 또는 세그먼트

코드 예시

입력 코드:

SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Copy

출력 코드:

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);
Copy

권장 사항

SSC-EWI-OR0014

예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.

심각도

Medium

설명

NLSSORT 함수는 현재 SELECT 문 내에서 사용할 수 없습니다.

코드 예시

입력 코드:

SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Copy

출력 코드:

// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
 NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
 products;
Copy

권장 사항

  • 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') );
Copy

출력 코드:

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') );
Copy

권장 사항

  • 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') );
Copy
URL                                                                                                   |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
Copy

이 함수은 다양한 클라우드 저장소 공급자와 호환됩니다. 로컬 시스템의 파일을 스테이지와 함께 사용하는 방법에 대한 자세한 내용은 이 설명서 를 참조하십시오.

  • 데이터 타입을 대상 시스템과 호환되는 타입으로 변환합니다.

  • 추가 지원이 필요하면 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;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

출력 코드:

!!!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;
Copy

권장 사항

  • 코드를 수동으로 수정하려면 유형 열에 액세스할 때 ‘.’(점) 연산자를 ‘:’(콜론)으로 바꾸십시오.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0071

심각도

낮음

설명

Snowflake에서는 ‘모두’ 한정자 사용이 지원되지 않습니다. 코드를 변환할 때 이 수정자가 제거되고 경고 메시지가 생성됩니다. 이 수정으로 인해 코드에서 예기치 않은 동작이 발생할 수 있다는 점에 유의하십시오.

코드 예시

입력 코드:

SELECT location_id  FROM locations
MINUS ALL
SELECT location_id  FROM departments;
Copy

출력 코드:

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;
Copy

Snowflake에서 INTERSECT 및 MINUS/EXCEPT 연산자는 결과 세트에서 중복된 값을 자동으로 제거합니다.

권장 사항

“all” 한정자 기능을 복제하려면 Snowflake에서 대체 방법을 확인하십시오. MINUS ALLEXCEPT 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
);
Copy

SSC-EWI-OR0020

심각도

보통

설명

Snowflake의 이 함수 구현은 음수 값을 허용하지 않으므로 실행 시 소스 데이터베이스와 다른 동작이 발생할 수 있습니다.

코드 예시

입력 코드:

SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Copy

출력 코드:

SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Copy

권장 사항

  • 음수 값을 입력 변수로 처리할 수 있는 사용자 정의 함수(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;
/
Copy

출력 코드:

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;
$$;
Copy

권장 사항

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;
Copy

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
    ;
$$;
Copy

권장 사항

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';
Copy

출력 코드

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';
Copy

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 복잡한 FOR LOOP 문을 여러 개의 간단한 루프로 나누거나 루프 조건을 더 명확하게 다시 작성하십시오.

  • 추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0010

예제를 더 명확하고 이해하기 쉽게 하기 위해 코드의 일부가 제거되었습니다.

심각도

중요

설명

이 경고는 PARTITIONSUBPARTITION 절이 쿼리에 사용될 때 표시됩니다. Snowflake는 데이터 파티션을 자동으로 관리하므로 이러한 절은 필요하지 않습니다.

코드 예시

입력 코드:

SELECT * FROM table1 PARTITION(col1);
Copy

출력 코드:

SELECT * FROM
table1
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
        PARTITION(col1);
Copy

권장 사항

  • 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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 예외 코드가 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;
Copy

출력 코드:

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;
Copy
  • 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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

SSC-EWI-OR0068

심각도

Medium

설명

이 오류는 START WITH 값이 Snowflake의 최대 허용 값보다 클 때 발생합니다. Snowflake 설명서에 따르면 시퀀스 시작 값은 64비트 2의 보수 정수 범위(-2^63 ~ 2^63-1) 내에 있어야 합니다. 구체적으로 허용되는 최대 값은 다음과 같습니다.

  • 양수: 9223372036854775807

  • 음수: 9223372036854775808

코드 예시

입력 코드:

CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
Copy
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Copy

출력 코드:

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"}}';
Copy
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"}}';
Copy

권장 사항

  • 시퀀스를 재설정하고 사용 방법을 조정하는 것이 좋습니다. 참고: 대상 열에 이 값을 저장할 수 있는 충분한 용량이 있는지 확인합니다.

  • 추가 지원이 필요하면 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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 데이터 계층 구조에 주기가 포함된 경우 이 문서 에서 주기를 처리하는 방법에 대한 지침을 참조하십시오.

  • 추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0029

설명

Snowflake는 ‘변환 오류 시 기본값’ 기능을 지원하지 않습니다.

코드 예시

입력 코드:

SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Copy

출력 코드:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
Copy

권장 사항

  • 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;
Copy

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`)*/
    ;
$$;
Copy

권장 사항

  • 동적 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);
Copy

출력 코드:

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);
Copy

권장 사항

  • 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;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

SSC-EWI-OR0008

심각도

낮음

설명

이 오류는 시스템이 인식할 수 없는 날짜 형식을 발견할 때 발생하며, 이로 인해 예기치 않은 결과가 발생할 수 있습니다.

코드 예시

입력 코드:

SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Copy

출력 코드:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
 TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Copy

참고: 날짜 형식 ‘iw-iyyy’는 지원되지 않습니다.

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

수동으로 마이그레이션한 즉시 실행 프로시저:

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;
$$;
Copy

권장 사항

  • 프로시저를 수동으로 마이그레이션하려면 변수를 생성하고 식을 할당합니다.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0049

심각도

중요

예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.

설명

이 경고는 지원되지 않는 상태 저장 패키지의 멤버를 사용하려고 할 때 표시됩니다.

이 기능은 향후 릴리스에서 사용할 수 있습니다.

코드 예시

입력 코드:

CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
    TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Copy

출력 코드:

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;
Copy

권장 사항

SSC-EWI-OR0129

심각도

낮음

예제를 더 명확하게 하기 위해 코드 출력의 일부가 제거되었습니다.

설명

이 경고는 참조된 TYPE 특성을 찾을 수 없어 시스템에서 항목의 데이터 타입을 확인할 수 없을 때 표시됩니다. 이러한 경우 시스템은 자동으로 VARIANT 데이터 타입을 항목에 할당합니다.

코드 예시

입력 코드:

CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 참조 항목의 데이터 타입을 수동으로 확인하고 그에 따라 참조 항목의 TYPE 특성을 업데이트합니다.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0069

심각도

Medium

설명

Snowflake는 시퀀스에 대한 CURRVAL 속성을 지원하지 않습니다.

코드 예시

Oracle:

select seq1.currval from dual;
Copy

Snowflake Scripting:

select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 seq1.currval from dual;
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

출력 코드:

// 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;
Copy

권장 사항

SSC-EWI-OR0007

설명

이 메시지는 Snowflake가 지원하지 않는 Create Type 문을 사용하려고 할 때 표시됩니다.

코드 예시

입력 코드(Oracle):

CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Copy

출력 코드:

--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
                                           ;
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 작업의 타이밍이 문제를 일으키는 경우 적절한 위치에 날짜 또는 타임스탬프를 추가하여 문제를 수정할 수 있습니다.

  • 추가 지원이 필요하면 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;
Copy

출력 코드:

!!!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;
Copy

권장 사항

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;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

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;
$$;
Copy

권장 사항

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;
Copy

출력 코드:

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
  ;
$$;
Copy

가독성을 높이기 위해 출력 코드의 일부 섹션을 생략했습니다.

권장 사항

SSC-EWI-OR0095

심각도

낮음

설명

INTERVAL YEAR TO MONTHINTERVAL 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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

SSC-EWI-OR0076

심각도

Medium

설명

기본 제공 패키지 변환은 현재 사용할 수 없습니다.

코드 예시

입력 코드(Oracle):

SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Copy

출력 코드:

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;
Copy

권장 사항

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;
Copy

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;
$$;
Copy

관련 EWI

  1. SSC-EWI-OR0036: 경고: 문자열과 날짜 데이터 타입 간의 산술 작업은 예기치 않은 결과를 생성할 수 있습니다.

  2. SSC-PRF-0004: 이 코드에는 성능에 영향을 줄 수 있는 커서 기반 루프가 포함되어 있습니다.

  3. 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;
Copy

출력 코드:

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;
Copy

권장 사항

  • 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)
();
Copy

출력 코드:

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)
();
Copy

권장 사항

SSC-EWI-OR0053

심각도

Medium

설명

이 오류는 잘못된 입력 형식을 사용하여 데이터를 형 변환하려고 할 때 발생합니다. 그 결과 코드에 설명이 추가되고 이 메시지가 표시됩니다.

코드 예시:

입력 코드:

SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
Copy

출력 코드:

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;
Copy

권장 사항

SSC-EWI-OR0002

예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.

심각도

높음

설명

이 오류는 시스템이 선택 식의 열을 확인할 수 없을 때 발생합니다. 이는 일반적으로 두 가지 시나리오에서 발생합니다.

  1. 해결되지 않은 타입 액세스를 참조하는 경우

  2. 열 정의가 없는 사용자 정의 유형(예: 본문이 없는 유형 또는 빈 오브젝트 유형)에서 열에 액세스하려고 할 때

코드 예시

입력 코드:

CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
    unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
    INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 참조된 유형 정의에 열 정의가 포함되어 있는지 확인합니다.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0036

심각도

낮음

설명

이 오류는 호환되지 않는 두 가지 데이터 타입이 산술 작업에 사용되어 예기치 않은 결과를 초래할 수 있는 경우 발생합니다.

코드 예시

입력 코드:

SELECT
    SYSDATE,
    SYSDATE + '1',
    SYSDATE + 'A'
from
    dual;
Copy

출력 코드:

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;
Copy

문자열과 날짜 데이터 타입 간에 작업을 수행할 때는 결과가 예상치 못한 결과가 나오거나 부정확할 수 있다는 점에 유의하십시오. 날짜 관련 작업을 수행하기 전에 문자열을 날짜 유형으로 변환하는 것이 좋습니다.

권장 사항

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);
Copy

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);
Copy

권장 사항

SSC-EWI-OR0026

예제를 더 명확하고 쉽게 따라할 수 있도록 출력 코드의 일부가 제거되었습니다.

심각도

Medium

설명

ROWID 문은 현재 이 버전에서 지원되지 않습니다.

코드 예시

Oracle:

SELECT QUERY_NAME.ROWID from TABLE1;
Copy

Snowflake Scripting:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
 QUERY_NAME.ROWID from
 TABLE1;
Copy

권장 사항

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;
Copy

출력 코드:

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;
$$;
Copy

권장 사항

  • 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(+);
Copy

출력 코드:

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(+);
Copy

권장 사항

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;
Copy

출력 코드:

- 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;
Copy

권장 사항

  • 모든 데이터베이스 링크에 고유한 이름이 있는지 확인합니다. 여러 데이터베이스 링크가 동일한 이름을 공유하고 코드가 여러 번 마이그레이션되는 경우 외부 웹 인터페이스(EWI)는 먼저 처리되는 데이터베이스 링크에 따라 정보를 잘못 처리할 수 있습니다.

  • 데이터베이스 링크에서 참조하는 데이터베이스 오브젝트를 사용 중인 동일한 Snowflake 데이터베이스 인스턴스로 재배치합니다.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.

SSC-EWI-OR0032

심각도

Medium

설명

이 오류는 함수에서 지원되지 않는 매개 변수를 사용하려고 할 때 발생합니다.

코드 예시

입력 코드:

SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Copy

출력 코드:

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;
Copy

권장 사항

  • 함수는 사용자 정의 함수(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;
Copy

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;
Copy

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';
Copy

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;
Copy

출력 코드:

--** 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;
$$;
Copy

권장 사항

SSC-EWI-OR0047

심각도

낮음

예제를 명확하고 간결하게 하기 위해 코드의 일부가 생략되었습니다.

설명

이 경고는 마이그레이션 프로세스 중에 Oracle TO_NCHAR 함수가 Snowflake의 TO_VARCHAR 함수로 변환된 경우에 표시됩니다.

코드 변환으로 인해 컴파일 오류가 발생하거나 원본과 다른 예기치 않은 출력이 생성되는 경우가 있을 수 있습니다.

코드 예시

입력 코드:

select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Copy

출력 코드:

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;
Copy

앞서 표시된 코드는 Snowflake에서 실행할 때 오류가 발생합니다.

모든 시나리오에서 오류가 발생하는 것은 아닙니다.

입력 코드:

SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Copy

출력 코드:

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;
Copy

마지막 예제는 Snowflake에서 성공적으로 실행되며 실행 시 동일한 출력을 생성합니다.

권장 사항

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>')));
Copy

출력 코드:

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>')));
Copy

권장 사항

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;
Copy

출력 코드

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;
$$;
Copy

관련 EWI

  1. SSC-EWI-0030: 다음 문에서 동적 SQL 이 감지되었습니다.

권장 사항

  • 출력 코드의 컴파일 오류를 수정하려면 SSC-EWI-OR0133 경고 메시지를 표시하는 커서 할당의 이름을 변경하십시오.

  • 추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.