SnowConvert AI - Oracle 문제¶
SSC-EWI-OR0001¶
START WITH ‘LIMIT VALUE’ 시퀀스는 Snowflake에서 지원되지 않습니다.
설명¶
이 오류는 START WITH 문 값이 LIMIT VALUE인 경우에 표시됩니다.
Oracle에서 이 절은 ALTER TABLE에만 사용됩니다
identity_options에만 적용되는STARTWITHLIMIT VALUE는ALTERTABLEMODIFY하고만 사용할 수 있습니다.STARTWITHLIMITVALUE를 지정한 경우, Oracle 데이터베이스는 테이블을 잠그고 테이블에서 최대 ID 열 값(시퀀스가 증가하는 경우) 또는 최소 ID 열 값(시퀀스가 감소하는 경우)을 찾아 해당 값을 시퀀스 생성기의 상위 워터마크로 할당합니다. 시퀀스 생성기에서 반환되는 다음 값은 상위 워터마크 +INCREMENTBYinteger(시퀀스가 증가하는 경우) 또는 상위 워터마크 -INCREMENTBYinteger(시퀀스가 감소하는 경우)입니다.
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-OR0002¶
식의 열을 찾을 수 없습니다
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
높음
설명¶
이 오류는 Select 식의 열을 확인할 수 없는 경우에 발생하며, 일반적으로 참조가 확인되지 않는 형식 액세스 또는 열이 정의되지 않은 사용자 정의 유형이 있는 열(본문이 없는 유형 또는 열이 없는 오브젝트 유형)을 참조하는 경우에 발생합니다.
코드 예시¶
입력 코드:¶
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-OR0004¶
SELECT에 사용된 구문이 Snowflake에서 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
높음
설명¶
이 경고는 SELECT의 절이 Snowflake에서 지원되지 않는 경우에 발생합니다. 지원되지 않는 절은 다음과 같습니다.
CONTAINERS
HIERARCHIES
EXTERNAL MODIFY
SHARDS
코드 예시¶
입력 코드:¶
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-OR0005¶
BFILE 및 BLOB 매개 변수는 바이너리로 간주됩니다. 형식이 필요할 수 있습니다.
참고
이 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-OR0006¶
TimeStampOutput 형식을 설정해야 할 수도 있습니다.
참고
이 EWI는 더 이상 사용되지 않습니다. SSC-FDM-OR0047 설명서를 참조하세요.
심각도¶
낮음
설명¶
타임스탬프 출력의 동등성을 위해 TIMESTAMP_OUTPUT_FORMAT 세션 매개 변수를 ‘DD-MON-YY HH24.MI.SS.FF AM TZH:TZM’으로 설정해야 할 수도 있습니다.
코드 예시¶
입력 코드: ¶
SELECT SYSTIMESTAMP FROM DUAL;
Oracle의 기본 TIMESTAMP 출력 예시¶
출력
13-JAN-21 04.18.37.288656 PM +00:00
생성된 코드:¶
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-OR0007¶
Create Type은 Snowflake에서 지원되지 않습니다
설명¶
이 메시지는 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-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-OR0009¶
JSON_TABLE 가 지원되지 않습니다.
심각도¶
높음
설명¶
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-OR0010¶
Partition 절은 Snowflake에서 처리됩니다. 수동 수정이 필요합니다
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
중요
설명¶
이 경고는 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-OR0011¶
형식 매개 변수는 지원되지 않습니다.
심각도¶
Medium
설명¶
현재 Snowflake에서는 특정한 경우에 CAST 함수의 형식 매개 변수를 지원하지 않습니다. 예를 들어, DATE 또는 TIMESTAMP 형식 내에서 “MONTH” 또는 “DAY”를 사용하는 경우입니다.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
다른 경우는 CAST 함수를 NUMBER와 함께 사용할 때입니다. 현재 SnowFlake에는 소수점을 표시하기 위해 4개의 인자가 필요합니다. 현재 출력 코드는 SnowFlake에 필요한 모든 인자를 제공하지 않으므로, 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-OR0013¶
NLS 매개 변수는 지원되지 않습니다.
심각도¶
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') "Amount" FROM DUAL;
SSC-EWI-OR0014¶
NLSSORT는 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
Medium
설명¶
NLSSORT 함수는 현재 SELECT 본문에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
생성된 코드:¶
// SnowConvert AI 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-OR0016¶
XML 가 지원되지 않습니다.
심각도¶
Medium
설명¶
다음 XML 관련 함수는 지원되지 않습니다.
EXTRACT
EXTRACTVALUE
XMLSEQUENCE
XMLTYPE
코드 예시¶
입력 코드:¶
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-OR0020¶
함수에는 음수 값이 지원되지 않습니다.
심각도¶
Medium
설명¶
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;
모범 사례¶
음수 매개 변수를 처리하거나 다른 대안을 찾을 수 있는 사용자 정의 함수를 만듭니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0023¶
AGGREGATE 함수는 지원되지 않습니다.
심각도¶
높음
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 오류는 집계 함수가 다음인 경우 추가됩니다.
DENSE_RANK()
RANK()
PERCENT_RANK()
CUME_DIST()
는 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-OR0026¶
ROWID 가 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
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-OR0029¶
DEFAULT ON CONVERSION ERROR는 지원되지 않습니다.
설명¶
Default On Conversion Error는 Snowflake에서 지원되지 않습니다
코드 예시¶
입력 코드:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
생성된 코드:¶
SELECT
PUBLIC.TO_NUMBER_UDF('2,00', 0) "Value" FROM DUAL;
모범 사례¶
UDF를 생성하여
DEFAULT값ON CONVERSION ERROR의 동작을 에뮬레이트할 수 있습니다.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0030¶
집계 함수에 사용된 KEEP 문은 지원되지 않습니다.
심각도¶
Medium
설명¶
이 오류는 집계 함수의 첫 번째 또는 마지막 값만 반환됨을 나타내는 데 사용되는 KEEP 문이 지원되지 않음을 알리기 위해 표시됩니다.
코드 예시¶
입력 코드:¶
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-OR0031¶
SYS_CONTEXT 매개 변수는 지원되지 않습니다.
심각도¶
낮음
설명¶
이 오류는 SYS_CONTEXT 함수 매개 변수가 지원되지 않는 경우에 발생합니다. 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;
모범 사례¶
이 함수는 사용자 정의 함수(stub)로 변환되므로, SYS_CONTEXT 매개 변수의 동작을 에뮬레이트하도록 수정할 수 있습니다.
추가 지원이 필요한 경우 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;
모범 사례¶
이 함수는 사용자 정의 함수(stub)로 변환되므로, 매개 변수의 동작을 에뮬레이트하도록 수정할 수 있습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0033¶
WITH의 PL/SQL 선언은 지원되지 않습니다.
심각도¶
Medium
설명¶
WITH 문의 PL/SQL 선언은 지원되지 않습니다.
코드 예시¶
입력 코드:¶
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 AI 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-OR0035¶
TABLE 함수가 식의 컬렉션으로 사용되는 경우는 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
Medium
설명¶
TABLE 함수가 식의 컬렉션으로 사용될 때는 Snowflake에서 지원되지 않습니다.
코드 예시¶
입력 코드:¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
생성된 코드:¶
// SnowConvert AI 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-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-OR0038¶
WITH 요소 문에서 Search 절이 제거되었습니다.
심각도¶
낮음
설명¶
search_clause는 SELECT 문에서 행이 처리되는 순서를 정의하는 데 사용됩니다. 이 기능을 사용하면 데이터를 사용자 지정하여 탐색할 수 있으므로 지정된 기준에 따라 특정 시퀀스로 결과가 반환됩니다. 그러나 search_clause 특징을 보이는 이 동작은 Snowflake에서 지원되지 않습니다.
Oracle과 같은 데이터베이스에서 search_clause는 일반적으로 재귀 쿼리 또는 공통 테이블 식(CTEs)을 함께 사용하여 계층적 데이터를 탐색하는 시퀀스에 영향을 줍니다. search_clause에서 특정 열 또는 열 세트를 지정하여 계층 구조의 깊이 우선 또는 너비 우선 탐색을 제어해 행이 처리되는 순서에 영향을 줄 수 있습니다.
Snowflake에서 search_clause 메시지가 생성된 후 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-OR0039¶
NOCYCLE 절은 Snowflake에서 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
낮음
설명¶
이 메시지는 SnowConvert AI가 Snowflake에서 지원되지 않는 NOCYCLE 절이 있는 쿼리를 발견하는 경우에 표시됩니다.
이 절은 재귀가 있는 경우를 표시합니다.
이 절의 기능에 대한 자세한 내용은 [설명서]https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__GUID-8EE64250-3C9A-40C7-A81D-46695F8B2EB9)를 참조하세요.
코드 예시¶
연결 방법¶
입력 코드:¶
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;
모범 사례¶
데이터 계층 구조에 CYCLE이 있는 경우 이 문서를 검토하여 처리할 수 있습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
수동 해결 방법은 다음 링크를 검토하세요. https://community.snowflake.com/s/article/NOCYCLE-workaround
SSC-EWI-OR0042¶
MODEL 절은 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
낮음
설명¶
이 메시지는 SnowConvert AI가 Snowflake에서 지원되지 않는 MODEL 절이 있는 쿼리를 발견하는 경우에 표시됩니다.
코드 예시¶
입력 코드:¶
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-OR0045¶
캐스트 유형 L 및 FML은 지원되지 않습니다
심각도¶
Medium
설명¶
이 문제는 FML을 사용하여 캐스트하려고 하거나 Snowflake에 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-OR0046¶
Alter Table 구문은 Snowflake에서 적용할 수 없습니다.
참고
이 EWI는 더 이상 사용되지 않습니다. SSC-EWI-0109 설명서를 참조하세요.
심각도¶
Medium
설명¶
사용된 Alter Table 구문은 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-OR0047¶
TO_NCHAR가 TO_VARCHAR로 변환되었으며, Snowflake에서 컴파일하지 못할 수 있습니다.
심각도¶
낮음
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 경고는 TO_NCHAR 함수가 발견되었고 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-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-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-OR0051¶
PRAGMA EXCEPTION_INIT는 지원되지 않습니다.
심각도¶
낮음
설명¶
이 EWI는 PRAGMA EXCEPTION_INIT 함수가 프로시저 내에서 호출되는 경우에 추가됩니다. 예외 이름 및 예외의 SQL 코드는 RAISE 함수에 설정됩니다. Snowflake Scripting으로 변환되는 경우 예외 선언에 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-OR0052¶
예외 선언은 상승 함수에 의해 처리됩니다.
심각도¶
낮음
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
참고
JavasScript를 대상 언어로 사용하고 -t JavaScript 또는 --PLTargetLanguage JavaScript 플래그를 추가해 프로시저 및 매크로를 생성합니다.
설명¶
예외는 Oracle과 Snowflake의 두 언어 모두에서 정의할 수 있지만, RAISE 함수는 선언, 할당을 수행하고 오류를 발생시키도록 설계되었습니다. 이로 인해 Exception 선언이 주석 처리되고 경고가 표시됩니다.
코드 예시¶
입력 코드:¶
-- 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 AI 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-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-OR0057¶
이 시나리오에서는 중첩 프로시저 또는 함수에 대한 변환이 지원되지 않습니다.
심각도¶
중요
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
다른 함수 또는 프로시저 내부의 중첩 함수 변환은 지원되지 않습니다. 마찬가지로, 함수 또는 익명 블록 내에 중첩된 프로시저는 현재 지원되지 않습니다.
그러나 다른 프로시저 또는 패키지 내의 중첩 프로시저는 지원됩니다. 자세한 내용은 중첩 프로시저 설명서를 참조하세요.
코드 예시¶
입력 코드:¶
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
생성된 코드:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0068 - 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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED FUNCTION IS NOT SUPPORTED IN THIS SCENARIO ***/!!!
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
$$;
모범 사례¶
최종 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0067¶
단일 문에서의 다중 제약 조건 정의는 Snowflake에서 지원되지 않습니다.
심각도¶
Medium
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
단일 ALTER TABLE 문에서의 다중 제약 조건 정의는 Snowflake에서 지원되지 않습니다.
코드 예시¶
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-OR0068¶
시퀀스 시작 값이 Snowflake에서 허용하는 최대값을 초과합니다.
심각도¶
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"}}';
모범 사례¶
시퀀스를 재설정하고 사용법도 수정하는 것이 좋습니다. NOTE: 대상 열에는 이 값을 보유할 만큼 충분한 공간이 있어야 합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0069¶
시퀀스 CURRVAL 속성은 Snowflake에서 지원되지 않습니다.
심각도¶
Medium
설명¶
시퀀스 CURRVAL 속성은 Snowflake에서 지원되지 않습니다.
코드 예시¶
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-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-OR0071¶
세트 수량자는 지원되지 않습니다
심각도¶
낮음
설명¶
수량자 ‘all’은 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 연산자는 항상 중복 값을 제거합니다.
모범 사례¶
Snowflake에서 대안을 확인하여 “all” 수량자의 기능을 에뮬레이트합니다. 아래는
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-OR0072¶
프로시저 멤버는 지원되지 않습니다
심각도¶
Medium
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
참고
JavasScript를 대상 언어로 사용하고 -t JavaScript 또는 –PLTargetLanguage 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 AI 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-OR0075¶
문의 레이블은 지원되지 않습니다
심각도¶
Medium
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
참고
JavasScript를 대상 언어로 사용하고 -t JavaScript 또는 –PLTargetLanguage 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:¶
--Additional Params: -t JavaScript
--** 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": "07/16/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
// REGION SnowConvert AI Helpers Code
var RAISE = function (code,name,message) {
message === undefined && ([name,message] = [message,name])
var error = new Error(message);
error.name = name
SQLERRM = `${(SQLCODE = (error.code = code))}: ${message}`
throw error;
};
var SQL = {
FOUND : false,
NOTFOUND : false,
ROWCOUNT : 0,
ISOPEN : false
};
var _RS, _ROWS, SQLERRM = "normal, successful completion", SQLCODE = 0;
var getObj = (_rs) => Object.assign(new Object(),_rs);
var getRow = (_rs) => (values = Object.values(_rs)) && (values = values.splice(-1 * _rs.getColumnCount())) && values;
var fetch = (_RS,_ROWS,fmode) => _RS.getRowCount() && _ROWS.next() && (fmode ? getObj : getRow)(_ROWS) || (fmode ? new Object() : []);
var EXEC = function (stmt,binds,opts) {
try {
binds = !(arguments[1] instanceof Array) && ((opts = arguments[1]) && []) || (binds || []);
opts = opts || new Object();
binds = binds ? binds.map(fixBind) : binds;
_RS = snowflake.createStatement({
sqlText : stmt,
binds : binds
});
_ROWS = _RS.execute();
if (opts.sql !== 0) {
var isSelect = stmt.toUpperCase().trimStart().startsWith("SELECT");
var affectedRows = isSelect ? _RS.getRowCount() : _RS.getNumRowsAffected();
SQL.FOUND = affectedRows != 0;
SQL.NOTFOUND = affectedRows == 0;
SQL.ROWCOUNT = affectedRows;
}
if (opts.row === 2) {
return _ROWS;
}
var INTO = function (opts) {
if (opts.vars == 1 && _RS.getColumnCount() == 1 && _ROWS.next()) {
return _ROWS.getColumnValue(1);
}
if (opts.rec instanceof Object && _ROWS.next()) {
var recordKeys = Object.keys(opts.rec);
Object.assign(opts.rec,Object.fromEntries(new Map(getRow(_ROWS).map((element,Index) => [recordKeys[Index],element]))))
return opts.rec;
}
return fetch(_RS,_ROWS,opts.row);
};
var BULK_INTO_COLLECTION = function (into) {
for(let i = 0;i < _RS.getRowCount();i++) {
FETCH_INTO_COLLECTIONS(into,fetch(_RS,_ROWS,opts.row));
}
return into;
};
if (_ROWS.getRowCount() > 0) {
return _ROWS.getRowCount() == 1 ? INTO(opts) : BULK_INTO_COLLECTION(opts);
}
} catch(error) {
RAISE(error.code,error.name,error.message)
}
};
var FETCH_INTO_COLLECTIONS = function (collections,fetchValues) {
for(let i = 0;i < collections.length;i++) {
collections[i].push(fetchValues[i]);
}
};
var IS_NULL = (arg) => !(arg || arg === 0);
var formatDate = (arg) => (new Date(arg - (arg.getTimezoneOffset() * 60000))).toISOString().slice(0,-1);
var fixBind = function (arg) {
arg = arg instanceof Date ? formatDate(arg) : IS_NULL(arg) ? null : arg;
return arg;
};
// END REGION
/* -- procedure body
EXIT loop_b */
// procedure body
// procedure body
;
// procedure body continuation
;
$$;
모범 사례¶
최종 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 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-OR0078¶
Execute Immediate 내부에서 동적 SQL 문을 구문 분석할 수 없습니다.
심각도¶
Medium
설명¶
SnowConvert AI는 Execute Immediate 내부에서 동적 SQL 문을 구문 분석할 수 없습니다.
참고
JavasScript를 대상 언어로 사용하고 -t JavaScript 또는 --PLTargetLanguage 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 AI Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
모범 사례¶
구문 오류에 대한 동적 SQL 문을 확인합니다.
해당 문이 여전히 지원되지 않는지 확인하려면 SnowConvert AI 설명서를 검토합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0082¶
중첩된 유형 특성 식을 변환할 수 없습니다
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
Medium
설명¶
이 오류 메시지는 SELECT와 같은 쿼리가 특정 유형으로 정의된 열 내의 특성에 액세스하려고 할 때 표시됩니다. 이는 자동으로 변환할 수는 없지만, 수동으로 빠르게 변환할 수 있습니다.
코드 예시:¶
입력 코드 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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
;
CREATE OR REPLACE VIEW my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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 column1.property1.attribute1,
column1.property2
FROM
my_table;
모범 사례¶
유형 열에 액세스하는 곳마다 ‘.’ 접근자를 ‘:’으로 변경하여 코드를 수동으로 수정할 수 있습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0087¶
Outer Join의 순서 지정 실패
심각도¶
낮음
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 문제는 이전에 (+) 연산자를 사용한 Outer Join이 있었던 쿼리의 새 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 절의 각 열 이름을 테이블 이름으로 정규화해 봅니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0089¶
REGEXP_LIKE_UDF 일치 매개 변수가 올바르게 동작하지 않을 수 있습니다
참고
이 EWI는 더 이상 사용되지 않습니다. SSC-FDM-OR0044 설명서를 참조하세요.
심각도¶
낮음
설명¶
이 경고는 Oracle REGEXP_LIKE 조건에 세 번째 매개 변수(일치 매개 변수)가 포함되는 경우에 표시됩니다. 이 경고가 추가되는 이유는 REGEXP_LIKE를 대체하는 데 사용되는 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-OR0090¶
비 Ansi Outer Join에 유효하지 않은 BETWEEN 조건자가 있습니다
심각도¶
Medium
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 문제는 Snowflake에서 실행할 수 없는 BETWEEN 절 내부에 (+) 연산자가 있는 OUTER JOIN이 있는 경우에 발생합니다. 이는 일반적으로 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(+);
모범 사례¶
수동으로 Outer Join을 ANSI 구문으로 변경합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0092¶
NUMBER 데이터 타입 음수 소수 자릿수가 출력에서 제거되었습니다
심각도¶
낮음
설명¶
이 문제는 음수 소수 자릿수가 있는 NUMBER가 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-OR0095¶
interval 유형과 date 유형 간의 연산이 지원되지 않습니다
심각도¶
낮음
설명¶
INTERVAL YEAR TO MONTH 및 INTERVAL DAY TO SECOND는 지원되는 데이터 타입이 아니며, VARCHAR(20)로 변환됩니다. 따라서 date 유형과 원본 interval 유형 열 간의 모든 산술 연산은 지원되지 않습니다.
또한, interval 유형과 date 유형 사이의 연산(이 순서대로)은 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;
모범 사례¶
UDF 를 구현하여 Oracle 동작을 시뮬레이션합니다.
가능한 경우 마이그레이션 중에 열에 저장된 이미 변환된 값을 추출하여 Snowflake 간격 상수로 사용합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
¶
SSC-EWI-OR0097¶
Snowflake 프로시저에서는 프로시저 속성이 지원되지 않습니다
심각도¶
낮음
설명¶
Oracle CREATEPROCEDURE 추가 속성은 필요하지 않으며 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-OR0099¶
예외 코드가 Snowflake Scripting 제한을 초과합니다
심각도¶
낮음
설명¶
이 EWI는 예외 선언 오류 코드가 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-OR0100¶
여러 조건이 있는 For 루프는 현재 Snowflake Scripting에서 지원되지 않습니다. 첫 번째 조건만 사용됩니다
심각도¶
낮음
설명¶
Oracle은 단일 FOR LOOP에서 여러 조건을 허용하지만 Snowflake Scripting은 FOR LOOP당 하나의 조건만 허용합니다. 변환 중에 첫 번째 조건만 마이그레이션되고 다른 조건은 무시됩니다.
코드 예시¶
입력 코드:¶
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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN REVERSE 1 TO 3
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
모범 사례¶
FOR LOOP를 여러 루프로 분리하거나 조건을 다시 작성합니다.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0101¶
특정 For 루프 절은 현재 Snowflake Scripting에서 지원되지 않습니다
심각도¶
낮음
설명¶
Oracle은 FOR LOOP 조건에 추가 절을 허용합니다. BY, WHILE 및 WHEN 절과 같습니다. WHILE 및 WHEN 절 모두 추가 부울 식을 조건으로 사용할 수 있습니다. 반면, BY 절은 반복에서 단계별 증분을 허용합니다. 이러한 추가 절은 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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 1 TO 10
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
FOR i IN 5 TO 15
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
모범 사례¶
FOR LOOP를 여러 루프로 분리하거나 조건을 다시 작성합니다.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0103¶
For 루프 형식은 현재 Snowflake Scripting에서 지원되지 않습니다
심각도¶
높음
설명¶
Oracle은 FOR LOOP에 대해 다양한 유형의 조건을 허용합니다. 부울 식, 컬렉션, 레코드를 지원하지만, Snowflake Scripting은 정의된 정수를 한계값으로 사용하는 FOR LOOP만 지원합니다. 다른 모든 형식은 지원되지 않는 것으로 표시되며 변환하려면 추가적인 수동 작업이 필요합니다.
Snowflake FOR LOOP에서 지원되지 않는 Oracle 반복 제어 절은 다음과 같습니다.
single_expression_controlvalues_of_controlindices_of_controlpairs_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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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 ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!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
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
FOR i IN VALUES OF :l_employee_values
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
모범 사례¶
FOR LOOP조건을 다시 작성하거나 다른 종류의LOOP를 사용하여 동작을 시뮬레이션합니다.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0104¶
사용할 수 없는 컬렉션 변수
심각도¶
높음
설명¶
Oracle 컬렉션은 현재 SnowConvert AI에서 지원되지 않습니다. 모든 컬렉션 유형 변수와 해당 사용법이 주석으로 처리됩니다.
참고
JavasScript를 대상 언어로 사용하고 -t JavaScript 또는 --PLTargetLanguage 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 AI 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-OR0105¶
BFILE 열 사용에 대한 추가 작업이 필요합니다. BUILD_STAGE_URL 함수가 권장되는 해결 방법입니다.
심각도¶
낮음
설명¶
BFILE 데이터 타입에 대한 변환은 VARCHAR입니다. 그러나 BFILE 유형과 상호 작용하는 데 사용되는 Oracle 기본 제공 함수에 대한 변환은 현재 지원되지 않습니다. 파일 경로와 이름을 저장하기 위해 열이 VARCHAR로 마이그레이션됩니다(자세한 내용은 BFILENAME_UDF 설명서 참조).
참고
BUILD_STAGE_FILE_URL 함수는 Snowflake에서 파일 작업을 할 때 권장되는 해결 방법입니다. 스테이지에 저장된 지정 파일에 대한 링크를 반환합니다. 함수 설명서는 여기에서 확인하세요.
코드 예시¶
입력 코드 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-OR0108¶
다음 할당 문은 Snowflake Scripting에서 지원되지 않습니다
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
Medium
설명¶
일부 Oracle 변수 유형은 Snowflake에서 직접 변환되지 않습니다. 현재 Snow 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;
생성된 코드:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "employees" **
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter OUT NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
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;
END;
$$;
모범 사례¶
변수 데이터 타입을 변경하거나 Snowflake 반정형 데이터 타입을 사용하여 동작을 시뮬레이션해 봅니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0109¶
Snowflake Scripting에서는 Using 절의 인자로 사용되는 식이 지원되지 않음
심각도¶
Medium
설명¶
Oracle은 EXECUTE IMMEDIATE 문에 대한 모든 USING 절에 인자로 식을 사용할 수 있습니다. 이 기능은 Snowflake Scripting에서는 지원되지 않습니다.
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-OR0110¶
For Update 절은 Snowflake에서 지원되지 않습니다
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도 ¶
높음
설명 ¶
Snow Scripting의 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;
생성된 코드:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "f_employee" **
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
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-OR0136](#ssc-ewi-or0136)을 확인하세요.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0116¶
INTERVAL 사이의 연산은 지원되지 않습니다
심각도¶
Medium
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 오류는 피연산자가 오직 INTERVAL로 구성된 산술 연산이 있는 경우에 추가되며, 이러한 종류의 연산은 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-OR0118¶
기본 제공 뷰 및 테이블은 Snowflake에서 지원되지 않습니다
심각도¶
Medium
설명¶
Oracle에는 Snowflake에는 없는 기본 제공 뷰 및 테이블 세트가 있습니다. SnowConvert AI는 이러한 요소를 사용하는 쿼리와 문에 오류 메시지를 추가합니다.
코드 예시¶
입력 코드:¶
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);
모범 사례¶
Oracle 기본 제공 뷰에서 제공하는 일부 정보는 Snowflake Information Schema에서 확인하거나 SHOW 명령을 사용하여 확인할 수 있습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0121¶
BFILE 열이 있는 DBMS_LOB.SUBSTR 기본 제공 패키지는 Snowflake에서 지원되지 않습니다
심각도¶
Medium
설명¶
Snowflake에서는 Oracle BFILE 열이 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-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;
모범 사례¶
모든 DB 링크의 이름이 다른지 확인하는 것이 중요합니다. 두 개의 DB 링크가 동일한 이름을 공유하고 코드가 여러 번 마이그레이션된 경우 EWI는 먼저 처리되는 DB 링크에 따라 정보를 변경할 수 있습니다.
데이터베이스 링크 참조에서 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-OR0128¶
부울 커서 특성은 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
심각도¶
낮음
설명¶
이 메시지는 부울 커서 특성이 SnowScript에서 지원되지 않거나 SnowScript에서 해당 기능을 에뮬레이트하는 변환이 없음을 나타내기 위해 사용됩니다. 다음 테이블은 에뮬레이션할 수 있는 부울 커서 특성을 보여줍니다.
부울 커서 특성 |
상태 |
|---|---|
|
에뮬레이션 가능 |
|
에뮬레이션 가능 |
|
지원되지 않음 |
코드 예시¶
입력 코드:¶
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;
생성된 코드:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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();
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
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-OR0129¶
TYPE 특성을 확인할 수 없습니다.
심각도¶
낮음
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 경고는 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-OR0133¶
커서 변수가 이미 할당되었습니다
심각도¶
Medium
설명¶
OPEN FOR 문이 변환된 경우 입력 코드에 사용된 커서 변수와 이름이 같은 커서 할당이 다른 문과 함께 추가되어 해당 기능을 에뮬레이트합니다. 동일한 커서 변수가 있는 여러 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으로 이메일을 보내주세요.
SSC-EWI-OR0135¶
데이터 보존 기간으로 인해 결과가 생성되지 않을 수 있습니다
심각도¶
낮음
설명¶
Snowflake에서 Time Travel을 사용하여 쿼리를 실행하는 경우 지정된 시간이 데이터 보존 기간 범위를 벗어난 경우 결과를 반환하지 않을 수 있습니다. 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-OR0136¶
Current OF 절은 Snowflake에서 지원되지 않습니다
심각도¶
중요
설명¶
UPDATE 및 DELETE와 같은 일부 문은 WHERE 절 내부에 CURRENT OF 절을 사용할 수 있으며, 이는 현재 Snowflake에서 지원되지 않습니다.
코드 예시¶
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:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "F_EMPLOYEE" **
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
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: 이 문에서 cursor for loop가 사용됩니다.
SSC-EWI-OR0110: Snowflake에서는 For Update 절이 지원되지 않습니다.
모범 사례¶
WHERE절에 열을 지정하여 쿼리를 일반UPDATE또는DELETE로 다시 설계합니다. 테이블에 중복 레코드가 있는 경우 쿼리가 여러 번 영향을 줄 수 있다는 점을 고려합니다.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-OR0137¶
유형 특성 참조가 지원되지 않을 수 있으므로 베리언트 데이터 타입으로 변환되었습니다.
심각도¶
중요
설명¶
유형 특성 ‘TYPEUSED%TYPE’은 지원되지 않을 수 있으므로, 베리언트로 변환되었습니다
코드 예시¶
Oracle:¶
CREATE OR REPLACE TABLE MYTABLE
(
LOG_ID URITYPE
);
CREATE OR REPLACE PROCEDURE some_procedure()
IS
L_MESSAGE MYTABLE.LOG_ID%TYPE;
BEGIN
NULL;
END;
Snowflake Scripting:¶
CREATE OR REPLACE TABLE MYTABLE
(
!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
LOG_ID URITYPE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "10/01/2025", "domain": "no-domain-provided", "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
;
CREATE OR REPLACE PROCEDURE some_procedure ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "10/01/2025", "domain": "no-domain-provided", "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
L_MESSAGE VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0137 - TYPE ATTRIBUTE 'MYTABLE.LOG_ID%TYPE' MIGHT BE UNSUPPORTED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
BEGIN
NULL;
END;
$$;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.