SnowConvert: Problemas do Oracle¶
SSC-EWI-OR0001¶
Descrição¶
Esse erro ocorre quando o valor na instrução START WITH
é definido como LIMIT VALUE
.
No Oracle, essa cláusula só é usada com a instrução ALTER TABLE.
A opção START WITH LIMIT VALUE
, que só está disponível para identity_options
, só pode ser usada com o comando ALTER TABLE MODIFY
. Quando você usa START WITH LIMIT VALUE
, o Oracle Database faz o seguinte:
Bloqueia a tabela
Encontra um dos dois:
O valor máximo da coluna de identidade (para sequências crescentes)
O valor mínimo da coluna de identidade (para sequências decrescentes)
Define esse valor como a marca d’água mais alta do gerador de sequência
Calcule o próximo valor de sequência por:
Para sequências crescentes: marca d’água alta +
INCREMENT BY integer
Para sequências decrescentes: marca d’água alta -
INCREMENT BY integer
ALTER TABLE ORACLE¶
Exemplo de código¶
Código de entrada:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Código de saída:¶
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"}}';
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0050¶
Gravidade¶
Medium
Descrição¶
Esse erro ocorre quando se tenta converter um valor que excede o intervalo permitido. Isso significa que o valor de precisão não é compatível com o Snowflake, o que faz com que o código seja comentado e essa mensagem seja adicionada.
Exemplo de código:¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0110¶
Partes do código foram removidas para facilitar a compreensão.
Severidade ¶
High
Descrição ¶
Não há equivalente direto para a cláusula FOR UPDATE
na linguagem Snowscript do Snowflake. A ferramenta adicionará uma mensagem de erro, aviso ou informação (EWI) e comentará essa cláusula durante a conversão.
Código de exemplo ¶
Código de entrada:¶
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;
Código de saída:¶
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;
$$;
Recomendações¶
Trate atualizações de colunas em consultas
UPDATE/DELETE
. Para obter mais informações, consulte o código de erro SSC-EWI-0075.Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0035¶
Partes do código de saída foram removidas para facilitar a compreensão.
Gravidade¶
Medium
Descrição¶
A função TABLE não pode ser usada no Snowflake ao tentar criar uma coleção de expressões. Essa funcionalidade não é suportada no momento.
Exemplo de código¶
Código de entrada:¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
Código de saída:¶
// 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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0097¶
Gravidade¶
Low
Descrição¶
As propriedades adicionais do Oracle nas instruções CREATE PROCEDURE
não são compatíveis com a sintaxe CREATE PROCEDURE
do Snowflake e podem ser omitidas com segurança durante a migração.
Exemplo de código¶
Código de entrada Oracle:¶
CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
NULL;
END;
Código de saída:¶
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;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0087¶
Gravidade¶
Low
Partes do código foram omitidas para manter o exemplo claro e conciso.
Descrição¶
Esse erro ocorre quando há um problema na conversão da sintaxe de junção externa do Oracle usando o operador (+) para as cláusulas ANSI JOIN. Especificamente, isso acontece quando a consulta original contém referências de tabelas circulares na cláusula WHERE, em que as tabelas são unidas em um padrão cíclico.
Quando esse indicador de aviso antecipado (EWI) é exibido, as operações JOIN podem falhar porque não estão na sequência correta.
Exemplo de código¶
Código de entrada 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;
Código de saída:¶
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;
Verifique se a consulta está sintaticamente correta e se você não está unindo tabelas desnecessariamente.
Se o problema persistir, especifique o nome da tabela para cada coluna na cláusula WHERE (por exemplo, use
table1.column_name
em vez de apenascolumn_name
).Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0100¶
Gravidade¶
Low
Descrição¶
O FOR LOOP
do Oracle pode ter várias condições, mas o FOR LOOP
do Snowflake Scripting suporta apenas uma única condição. Ao converter do Oracle para o Snowflake, apenas a primeira condição será migrada, e todas as condições adicionais serão ignoradas.
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
Código de saída:¶
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;
$$;
Recomendações¶
Divida as instruções complexas do
FOR LOOP
em vários loops mais simples ou reescreva a condição do loop para torná-lo mais claro.Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0011¶
Gravidade¶
Medium
Descrição¶
A função Cast no Snowflake não é compatível com o parâmetro de formato ao usar «MONTH» ou «DAY» nos formatos DATE ou TIMESTAMP.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Ao usar a função CAST com o tipo de dados NUMBER no Snowflake, você precisa especificar quatro argumentos para exibir corretamente os valores decimais. Atualmente, o código de saída não fornece todos os argumentos necessários para a função TO_NUMBER. Você precisará adicionar manualmente os argumentos que faltam para garantir a formatação decimal adequada.
Exemplo de código¶
Código de entrada:¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Código de saída:¶
SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Código de entrada:¶
SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0031¶
Gravidade¶
Low
Descrição¶
Esse erro ocorre quando você usa um parâmetro não suportado na função SYS_CONTEXT. O Snowflake oferece funções de contexto semelhantes que você pode usar em seu lugar. Para obter mais informações sobre as funções de contexto suportadas, visite a documentação do Snowflake.
Exemplo de código¶
Código de entrada:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Código de saída:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Recomendações¶
A função é convertida em um modelo de função definida pelo usuário (UDF) que você pode personalizar para replicar o comportamento do parâmetro SYS_CONTEXT.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0005¶
Esse indicador de alerta antecipado (EWI) não está mais em uso. Consulte SSC-FDM-OR0043 para obter a documentação atual.
Gravidade¶
Low
Descrição¶
Esse erro ocorre ao converter uma função TO_CLOB para TO_VARCHAR. Ao trabalhar com os parâmetros BFILE ou BLOB, talvez seja necessário especificar um parâmetro de formato para a conversão adequada.
Exemplo de código¶
Código de entrada:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Código de saída:¶
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;
Recomendações¶
Verifique se os resultados de saída coincidem entre o código-fonte e o código convertido. Adicione um parâmetro de formato, se necessário.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0104¶
Gravidade¶
High
Descrição¶
Atualmente, as coleções Oracle não são compatíveis com o SnowConvert. Todas as variáveis que usam tipos de coleção e suas operações associadas serão comentadas no código convertido.
Para gerar procedimentos e macros em JavaScript, adicione o sinalizador -t JavaScript
ou a opção --PLTargetLanguage JavaScript
ao seu comando.
Exemplo de código¶
Código de entrada 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;
Código de saída¶
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;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0070¶
Gravidade¶
Medium
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Descrição¶
Uma operação binária não pode ser convertida diretamente. Para resolver isso, adicionamos uma função definida pelo usuário.
Exemplo de código¶
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;
Recomendações¶
Nenhuma ação é exigida dos usuários finais.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0030¶
Gravidade¶
Medium
Descrição¶
O erro indica que a cláusula KEEP FIRST ou KEEP LAST, que é usada para selecionar apenas o primeiro ou o último valor ao usar funções agregadas, não é suportada no momento.
Exemplo de código¶
Código de entrada:¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0121¶
Gravidade¶
Medium
Descrição¶
Ao migrar colunas do Oracle BFILE para o Snowflake, elas são convertidas em colunas VARCHAR que armazenam o nome do arquivo como uma cadeia de caracteres. Isso significa que o uso da função SUBSTR no Snowflake nessas colunas migradas operará no próprio nome do arquivo, não no conteúdo do arquivo. Isso difere da função DBMS_LOB.SUBSTR do Oracle, que opera no conteúdo real do arquivo. Para obter mais detalhes, consulte Tipo de dados BFILE.
Exemplo de código¶
Código de entrada:¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
Código de saída:¶
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;
Recomendações¶
Saiba como lidar com arquivos no Snowflake consultando a documentação aqui.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0092¶
Gravidade¶
Low
Descrição¶
Essa mensagem aparece ao tentar usar uma escala negativa com um tipo de dados NUMBER para fins de arredondamento. Como o Snowflake não oferece suporte a escalas negativas, o parâmetro de escala foi removido da conversão.
Exemplo de código¶
Código de entrada 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|
Código de saída:¶
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 |
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0004¶
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Descrição¶
Esse aviso aparece quando uma instrução SELECT contém uma cláusula que o Snowflake não suporta. As cláusulas a seguir não são compatíveis com o Snowflake:
Objetos de contêineres que armazenam dados
Estruturas de dados hierárquicas para organizar informações
Modificações externas nas fontes de dados
Partições ou segmentos de dados
Exemplo de código¶
Código de entrada:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Código de saída:¶
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);
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0014¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Medium
Descrição¶
No momento, a função NLSSORT não pode ser usada na instrução SELECT.
Exemplo de código¶
Código de entrada:¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Código de saída:¶
// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
Recomendações¶
NLSSORT é transformado em uma função definida pelo usuário (UDF/Stub), que pode ser personalizada para replicar seu comportamento.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0105¶
Gravidade¶
Low
Descrição¶
O tipo de dados BFILE
é convertido para VARCHAR
durante a migração. Essa conversão permite o armazenamento do caminho e do nome do arquivo. Observe que as funções internas da Oracle para lidar com os tipos BFILE não são compatíveis no momento. Para obter mais detalhes sobre o tratamento de caminhos e nomes de arquivos, consulte a documentação de BFILENAME_UDF
.
A função BUILD_STAGE_FILE_URL
oferece uma maneira segura de acessar os arquivos armazenados nos estágios do Snowflake. Quando chamada, gera um URL que aponta para um arquivo específico em um estágio. Para obter mais detalhes, consulte a documentação da função aqui.
Exemplo de código¶
Código de entrada Oracle:¶
CREATE TABLE bfiletable ( bfile_column BFILE );
INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
Código de saída:¶
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') );
Recomendações¶
Use a função
BUILD_STAGE_FILE_URL
e outras funções de arquivo para gerenciar e manipular arquivos no 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|
Essa função é compatível com vários provedores de armazenamento em nuvem. Para obter informações sobre o uso de arquivos do sistema local com estágios, consulte esta documentação.
Converta o tipo de dados em um tipo compatível com o sistema de destino.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0045¶
Gravidade¶
Medium
Descrição¶
Essa mensagem é exibida quando você tenta usar FML ou L format casting, que não está disponível no Snowflake. Nesses casos, o código é comentado e essa mensagem de aviso é exibida.
Exemplo de código:¶
Código de entrada:¶
SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0082¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Medium
Descrição¶
Esse erro ocorre quando uma consulta tenta acessar um atributo em uma coluna que foi definida como um tipo personalizado. Embora a conversão automática não seja possível, você pode facilmente converter essas consultas manualmente.
Exemplo de código:¶
Código de entrada 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;
Código de saída:¶
!!!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;
Recomendações¶
Para corrigir o código manualmente, substitua o operador “.” (ponto) por “:” (dois pontos) ao acessar colunas de tipo.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0071¶
Gravidade¶
Low
Descrição¶
O uso do quantificador “all” não é compatível com o Snowflake. Ao converter seu código, esse modificador será removido e uma mensagem de aviso será gerada. Observe que essa modificação pode causar um comportamento inesperado em seu código.
Exemplo de código¶
Código de entrada:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Código de saída:¶
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;
No Snowflake, os operadores INTERSECT e MINUS/EXCEPT eliminam automaticamente os valores duplicados do conjunto de resultados.
Recomendações¶
Verifique métodos alternativos no Snowflake para replicar a funcionalidade do quantificador «all». Veja como contornar as limitações das operações MINUS ALL
e 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
);
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0020¶
Gravidade¶
Moderado
Descrição¶
A implementação dessa função pelo Snowflake não aceita valores negativos, o que resultará em um comportamento diferente em comparação com o banco de dados de origem quando executado.
Exemplo de código¶
Código de entrada:¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Código de saída:¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Recomendações¶
Crie uma função definida pelo usuário (UDF) que possa processar valores negativos como parâmetros de entrada ou explorar soluções alternativas.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0051¶
Gravidade¶
Low
Descrição¶
Esse aviso aparece quando uma função PRAGMA EXCEPTION_INIT é usada em um procedimento. No código original, os nomes das exceções e os códigos SQL são definidos usando a função RAISE. Durante a conversão para o Snowflake Scripting, esses códigos SQL são incluídos na declaração de exceção. No entanto, alguns desses valores do código SQL podem não ser compatíveis com o Snowflake Scripting.
Exemplo de código¶
Código de entrada:¶
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;
/
Código de saída:¶
Script Snowflake¶
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;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0075¶
Gravidade¶
Medium
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Gere procedimentos e macros em JavaScript adicionando o sinalizador -t JavaScript
ou --PLTargetLanguage JavaScript
ao seu comando.
Descrição¶
Os rótulos em blocos de código não podem ser usados como referências em instruções.
Exemplo de código¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
BEGIN
-- procedure body
EXIT loop_b;
-- procedure body continuation
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
/* ** SSC-EWI-OR0075 - LABELS IN STATEMENTS ARE NOT SUPPORTED. ** */
/* -- procedure body
EXIT loop_b */
// procedure body
;
// procedure body continuation
;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários finais.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0135¶
Gravidade¶
Low
Descrição¶
Ao executar uma consulta de Time Travel no Snowflake, você poderá não receber resultados se especificar um horário que esteja fora do período de retenção de dados. Para obter mais informações, consulte Time Travel do Snowflake.
Exemplo de código¶
Código de entrada¶
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'SampleName';
Código de saída¶
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';
Recomendações¶
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0101¶
Gravidade¶
Low
Descrição¶
O FOR LOOP
do Oracle oferece suporte a cláusulas adicionais que não estão disponíveis no Snowflake Scripting. Isso inclui:
Cláusula BY: Controla o tamanho da etapa do contador do loop
Cláusula WHILE: Adiciona uma condição booliana para continuar o loop
Cláusula WHEN: Adiciona uma condição booliana para continuar o loop
Ao transformar o código Oracle para o Snowflake, essas cláusulas são ignoradas, pois não são compatíveis com o Snowflake Scripting.
Exemplo de código¶
Código de entrada 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;
Código de saída:¶
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;
$$;
Recomendações¶
Divida as instruções complexas do
FOR LOOP
em vários loops mais simples ou reescreva a condição do loop para torná-lo mais claro.Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0010¶
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Gravidade¶
Crítico
Descrição¶
Esse aviso aparece quando as cláusulas PARTITION
e SUBPARTITION
são usadas em uma consulta. O Snowflake gerencia o particionamento de dados automaticamente, portanto, essas cláusulas não são necessárias.
Exemplo de código¶
Código de entrada:¶
SELECT * FROM table1 PARTITION(col1);
Código de saída:¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
Recomendações¶
Para obter uma funcionalidade semelhante no Snowflake, você deve adicionar manualmente uma cláusula
WHERE
para filtrar linhas de partição específicas. Observe que essa solução alternativa pode afetar o desempenho da consulta.Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0099¶
Gravidade¶
Low
Descrição¶
Esse erro ocorre quando o número da declaração de exceção está fora do intervalo permitido pelo Snowflake Scripting. Os números de exceção devem ser números inteiros entre -20000 e -20999.
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
Código de saída:¶
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;
$$;
Recomendações¶
Verifique se o seu código de exceção está dentro do intervalo permitido pelo Snowflake Scripting. Se não for o caso, use um número de exceção alternativo disponível.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0089¶
Esse indicador de alerta antecipado (EWI) não está mais em uso. Consulte SSC-FDM-OR0044 para obter a documentação atual.
Gravidade¶
Low
Descrição¶
Esse aviso aparece ao usar a função REGEXP_LIKE
do Oracle com um parâmetro de correspondência (terceiro parâmetro). O aviso indica que a função REGEXP_LIKE_UDF
no Snowflake, que substitui o REGEXP_LIKE
do Oracle, pode não ser compatível com todos os caracteres de parâmetro de correspondência. Como resultado, o resultado da consulta no Snowflake pode ser diferente do Oracle.
Exemplo de código¶
Código de entrada Oracle:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Código de saída:¶
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;
Se a sua condição
REGEXP_LIKE
contiver caracteres não suportados na função definida pelo usuário, considere modificar a expressão regular para obter o mesmo comportamento de correspondência sem usar esses caracteres. Para obter detalhes sobre caracteres não suportados, consulte a documentação REGEXP_LIKE_UDF.Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0128¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Low
Descrição¶
Essa mensagem indica que um atributo de cursor booliano não pode ser usado no SnowScript, seja porque não é compatível ou porque não há funcionalidade equivalente. A tabela abaixo lista os atributos do cursor booliano que podem ser replicados no SnowScript:
Status | Boolean Cursor Attribute | | | | - | | %FOUND
| Pode ser emulado | | %NOTFOUND
| Can be emulated | | %ISOPEN
| Não suportado |
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
$$;
Recomendações¶
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0068¶
Gravidade¶
Medium
Descrição¶
Esse erro ocorre quando o valor de START WITH
é maior do que o valor máximo permitido pelo Snowflake. De acordo com a documentação do Snowflake, o valor inicial da sequência deve estar dentro do intervalo de um inteiro complemento de dois de 64 bits: de -2^63
a 2^63-1
. Especificamente, os valores máximos permitidos são:
Números positivos: 9223372036854775807
Números negativos: 9223372036854775808
Exemplo de código¶
Código de entrada:¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Código de saída:¶
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"}}';
Recomendações¶
Recomendamos redefinir a sequência e ajustar como ela é usada. NOTE: Certifique-se de que a coluna de destino tenha capacidade suficiente para armazenar esse valor.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0039¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Low
Descrição¶
Essa mensagem aparece quando o SnowConvert detecta uma consulta que contém uma cláusula NOCYCLE, que atualmente não é compatível com o Snowflake.
Essa instrução indica quando ocorre uma operação recursiva.
Para obter informações adicionais sobre a funcionalidade da cláusula, consulte a documentação.
Exemplo de código¶
Conectar por¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendações¶
Se sua hierarquia de dados contiver ciclos, consulte este artigo para obter orientação sobre como lidar com eles.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0029¶
Descrição¶
O Snowflake não é compatível com o recurso «Default on conversion error».
Exemplo de código¶
Código de entrada:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Código de saída:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
Recomendações¶
Considere a possibilidade de criar uma função definida pelo usuário (UDF) para replicar a funcionalidade do valor
DEFAULT
ao lidar comON CONVERSION ERROR
.Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0078¶
Gravidade¶
Medium
Descrição¶
O SnowConvert não conseguiu analisar a instrução SQL dinâmica contida no comando Execute Immediate.
Para gerar procedimentos e macros em JavaScript, adicione o sinalizador -t JavaScript
ou a opção --PLTargetLanguage JavaScript
ao seu comando.
Exemplo de código¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE PROC1 AS
BEGIN
EXECUTE IMMEDIATE 'NOT A VALID SQL STATEMENT';
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE PROC1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
Recomendações¶
Verifique se a instrução SQL dinâmica tem a sintaxe correta.
Verifique a documentação do SnowConvert para confirmar se sua instrução é compatível.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0118¶
Gravidade¶
Medium
Descrição¶
O Oracle inclui exibições e tabelas internas que o Snowflake não suporta. Quando esses elementos são usados em consultas ou instruções, o SnowConvert gera uma mensagem de erro.
Exemplo de código¶
Código de entrada:¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
Código de saída:¶
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);
Recomendações¶
As informações normalmente encontradas nas exibições internas do Oracle estão disponíveis no Snowflake por meio do Information Schema ou usando o comando SHOW.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0009¶
Gravidade¶
High
Descrição¶
A função JSON_TABLE não é compatível com esta versão no momento.
Exemplo de código¶
Código de entrada:¶
SELECT jt.phones
FROM j_purchaseorder,
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR2(100) FORMAT JSON PATH '$.Phone')) AS jt;
Código de saída:¶
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;
Recomendações¶
Use a função FLATTEN do Snowflake como alternativa à funcionalidade JSON_TABLE.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0108¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Medium
Descrição¶
Os tipos de variáveis Oracle, como cursores, coleções, registros e tipos definidos pelo usuário, não podem ser convertidos diretamente para o Snowflake. Além disso, o Snow Scripting não suporta atualmente a transformação de espaços reservados, objetos e parâmetros de saída.
A conversão dessas variáveis em tipos de dados semiestruturados do Snowflake pode ser uma solução em determinados casos.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
$$;
Recomendações¶
Considere a possibilidade de alterar o tipo de dados de variáveis ou usar os tipos de dados semiestruturados do Snowflake para replicar o comportamento desejado.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0008¶
Gravidade¶
Low
Descrição¶
Esse erro ocorre quando o sistema encontra formatos de data que não são reconhecidos, o que pode levar a resultados inesperados.
Exemplo de código¶
Código de entrada:¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Código de saída:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Observação: O formato de data «iw-iyyy» não é compatível.
Recomendações¶
Para obter uma lista dos formatos de carimbo de data/hora compatíveis, consulte a documentação.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0109¶
Gravidade¶
Medium
Descrição¶
O Snowflake Scripting não oferece suporte ao uso de expressões como argumentos na cláusula USING das instruções EXECUTE IMMEDIATE, ao contrário do Oracle, onde essa funcionalidade está disponível.
O Snowflake Scripting oferece suporte a expressões variáveis. Você pode substituir uma expressão atribuindo-a manualmente a uma variável, conforme mostrado no exemplo abaixo.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
$$;
Procedimento Execute Immediate migrado manualmente:¶
Para resolver o erro de compilação e manter os mesmos resultados do Oracle, use o procedimento descrito acima.
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;
$$;
Recomendações¶
Para migrar manualmente os procedimentos, crie uma variável e atribua a expressão a ela.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0049¶
Gravidade¶
Crítico
Partes do código foram omitidas para manter o exemplo claro e conciso.
Descrição¶
Esse aviso aparece quando você tenta usar um membro não suportado de um Stateful Package.
Esse recurso estará disponível em uma versão futura.
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0129¶
Gravidade¶
Low
Partes da saída do código foram removidas para tornar o exemplo mais claro.
Descrição¶
Esse aviso aparece quando o sistema não consegue determinar o tipo de dados de um item porque o atributo TYPE
referenciado não pode ser encontrado. Nesses casos, o sistema atribui automaticamente o tipo de dados VARIANT
ao item.
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Código de saída:¶
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;
$$;
Recomendações¶
Verifique manualmente o tipo de dados do item referenciado e atualize o atributo TYPE no item referenciado de acordo.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0069¶
Gravidade¶
Medium
Descrição¶
O Snowflake não oferece suporte à propriedade CURRVAL para sequências.
Exemplo de código¶
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;
Recomendações¶
Para obter orientação sobre como lidar com cenários que envolvem a propriedade CURRVAL, consulte a documentação da Snowflake.
Para obter assistência adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0038¶
Gravidade¶
Low
Descrição¶
A search_clause
controla como as linhas são processadas em uma instrução SELECT definindo sua ordem. Embora esse recurso permita que você especifique como os dados devem ser percorridos e retornados no Oracle, ele não está disponível no Snowflake.
No Oracle e em bancos de dados semelhantes, a search_clause
ajuda a controlar como os dados hierárquicos são processados em consultas recursivas ou Common Table Expressions (CTEs). Quando você especifica colunas na search_clause
, pode escolher entre os métodos de análise depth-first ou breadth-first, que determinam a ordem de processamento das linhas.
No Snowflake, uma mensagem search_clause
será gerada e depois removida.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendação¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0033¶
Gravidade¶
Medium
Descrição¶
Declarações de variáveis PL/SQL dentro de cláusulas WITH não são suportadas no momento.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
// 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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0007¶
Descrição¶
Essa mensagem aparece quando você tenta usar uma instrução Create Type que o Snowflake não suporta.
Exemplo de código¶
Código de entrada (Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Código de saída:¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0116¶
Gravidade¶
Medium
Partes do código de saída foram removidas para tornar o exemplo mais claro.
Descrição¶
Esse erro ocorre ao tentar realizar operações aritméticas exclusivamente com intervalos. O Snowflake não oferece suporte a cálculos entre dois valores de intervalo.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendações¶
Se o tempo de uma operação estiver causando problemas, você pode corrigi-lo adicionando datas ou carimbos de data/hora ao local apropriado.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0046¶
Esse aviso não está mais em uso. Consulte SSC-EWI-0109 para obter a documentação atual.
Gravidade¶
Medium
Descrição¶
Quando um comando de alteração de tabela não for compatível com a sintaxe do Snowflake, o código será comentado e essa notificação será adicionada como um comentário.
Exemplo de código:¶
Código de entrada:¶
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;
Código de saída:¶
!!!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;
Recomendações¶
Você não precisa realizar nenhuma ação adicional.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0023¶
Gravidade¶
High
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Descrição¶
Esse erro ocorre quando uma função agregada é usada
DENSE_RANK(): Atribui uma classificação a cada linha em uma partição, sem lacunas na sequência de classificação quando há empates
RANK(): Atribui uma classificação a cada linha em uma partição, com lacunas na sequência de classificação quando há empates
PERCENT_RANK(): Calcula a classificação relativa de uma linha em uma partição como uma porcentagem (0 a 1)
CUME_DIST(): Calcula a distribuição cumulativa de um valor em uma partição (0 a 1)
não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendações¶
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0072¶
Gravidade¶
Medium
Partes do código foram removidas para tornar o exemplo mais claro e fácil de entender.
Gere procedimentos e macros em JavaScript adicionando o sinalizador -t JavaScript
ou --PLTargetLanguage JavaScript
ao seu comando.
Descrição¶
No momento, não há suporte para membros processuais nesta versão. Aqui está um exemplo do que queremos dizer com membros processuais:
Constantes definidas no código
Cursores de banco de dados usados para recuperação de dados
Instruções pragma que controlam o comportamento do compilador
Variáveis definidas no código
Exemplo de código¶
Oracle:¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
NULL;
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0052¶
Gravidade¶
Low
Partes da saída do código foram removidas para manter o exemplo claro e conciso.
Para gerar procedimentos e macros em JavaScript, adicione o sinalizador -t JavaScript
ou a opção --PLTargetLanguage JavaScript
ao seu comando.
Descrição¶
Existem exceções tanto no Oracle quanto no Snowflake. No entanto, a função RAISE lida com todas as três tarefas: declarar, atribuir e lançar o erro. É por isso que a instrução Exception aparece como um comentário e gera uma mensagem de aviso.
Exemplo de código¶
Código de entrada:¶
-- 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;
Código de saída:¶
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
;
$$;
Para facilitar a leitura, algumas seções do código de saída foram omitidas.
Recomendações¶
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0095¶
Gravidade¶
Low
Descrição¶
Os tipos de dados INTERVAL YEAR TO MONTH
e INTERVAL DAY TO SECOND
são convertidos para VARCHAR(20)
, pois não são compatíveis. Como resultado, você não pode realizar operações aritméticas entre Date Types e colunas que eram originalmente Interval Type.
Além disso, ao realizar operações entre um tipo de intervalo e um tipo de data (especificamente nessa sequência), o Snowflake não oferece suporte a essas operações e gerará essa mensagem EWI.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
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;
Recomendações¶
Crie uma função definida pelo usuário (UDF) que replique a funcionalidade do Oracle.
Use o valor transformado armazenado na coluna durante a migração como uma Constante de intervalo do Snowflake quando disponível.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
¶
SSC-EWI-OR0126¶
Gravidade¶
Medium
Descrição¶
Esse erro ocorre quando você tenta usar um objeto que tem um tipo de dados personalizado incorporado ao sistema.
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PROCEDURE proc01 is
var1 DBMS_SQL.VARCHAR2_TABLE;
var2 CTX_CLS.DOC_TAB;
BEGIN
varX := var1.property;
varY := var2(1);
END;
Código de saída:¶
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;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0076¶
Gravidade¶
Medium
Descrição¶
A conversão de pacotes incorporada não está disponível no momento.
Exemplo de código¶
Código de entrada (Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Código de saída:¶
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;
Recomendações¶
Nenhuma ação é exigida dos usuários.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0136¶
Gravidade¶
Crítico
Descrição¶
Atualmente, o Snowflake não oferece suporte à cláusula CURRENT OF dentro da cláusula WHERE das instruções UPDATE e DELETE.
Exemplo de código¶
Oracle:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of
AS
CURSOR C1
IS
SELECT * FROM F_EMPLOYEE FOR UPDATE OF SALARY nowait;
BEGIN
FOR CREC IN C1
LOOP
UPDATE F_EMPLOYEE SET SALARY=SALARY+2000 WHERE CURRENT OF C1;
END LOOP;
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
C1 CURSOR
FOR
SELECT * FROM
F_EMPLOYEE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF SALARY nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE F_EMPLOYEE
SET SALARY=
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!SALARY+2000 WHERE CURRENT OF C1;
END FOR;
CLOSE C1;
END;
$$;
EWI relacionado¶
SSC-EWI-OR0036: Aviso: As operações aritméticas entre os tipos de dados string e date podem produzir resultados inesperados.
SSC-PRF-0004: Esse código contém loops baseados em cursor que podem afetar o desempenho.
SSC-EWI-OR0110: No momento, a cláusula FOR UPDATE não é compatível com o Snowflake.
Recomendações¶
Reescreva a consulta usando as instruções padrão
UPDATE
ouDELETE
. Inclua condições específicas de coluna na cláusulaWHERE
. Lembre-se de que, se a sua tabela contiver registros duplicados, a consulta poderá afetar esses registros várias vezes.Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0013¶
Gravidade¶
Medium
Descrição¶
No momento, o parâmetro NLS (National Language Support) não é compatível com as seguintes funções:
Converter um valor em uma cadeia de caracteres (TOCHAR)
Converter um valor em uma data (TODATE)
Converter um valor em um número (TONUMBER)
Converter um valor em um carimbo de data/hora (TOTIMESTAMP)
Converter um valor em um tipo de dados especificado (CAST)
Exemplo de código¶
Código de entrada:¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Código de saída:¶
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;
Recomendações¶
A função TO_NUMBER é transformada em uma função definida pelo usuário (UDF/Stub), o que permite personalizar seu comportamento com base nos requisitos específicos dos parâmetros.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0042¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Low
Descrição¶
Essa mensagem aparece quando o SnowConvert detecta uma consulta que contém uma cláusula MODEL, que atualmente não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Código de saída:¶
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)
();
Recomendações¶
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0053¶
Gravidade¶
Medium
Descrição¶
Esse erro ocorre ao tentar converter dados usando um formato de entrada incorreto. Como resultado, o código é comentado e essa mensagem é exibida.
Exemplo de código:¶
Código de entrada:¶
SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
Código de saída:¶
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;
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0002¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
High
Descrição¶
Esse erro ocorre quando o sistema não consegue resolver as colunas em uma expressão Select. Isso geralmente acontece em dois cenários:
Ao fazer referência a um Type Access que não foi resolvido
Ao tentar acessar colunas de um tipo definido pelo usuário que não possui definições de coluna (como um tipo sem corpo ou um tipo de objeto vazio)
Exemplo de código¶
Código de entrada:¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
Código de saída:¶
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;
$$;
Recomendações¶
Verificar se a definição de tipo referenciada contém definições de coluna.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0036¶
Gravidade¶
Low
Descrição¶
Esse erro ocorre quando dois tipos de dados incompatíveis são usados em uma operação aritmética, o que pode levar a resultados inesperados.
Exemplo de código¶
Código de entrada:¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
Código de saída:¶
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;
Ao realizar operações entre os tipos de dados String e Date, esteja ciente de que os resultados podem ser inesperados ou incorretos. Recomenda-se converter o String em um tipo Date antes de realizar qualquer operação relacionada à data.
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0067¶
Gravidade¶
Moderado
Partes do código foram omitidas para manter o exemplo claro e conciso.
Descrição¶
O Snowflake não permite que você defina várias restrições em uma única instrução ALTER TABLE.
Exemplo de código¶
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);
Recomendações¶
Nenhuma ação é exigida dos usuários finais.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0026¶
Partes do código de saída foram removidas para tornar o exemplo mais claro e fácil de seguir.
Gravidade¶
Medium
Descrição¶
No momento, a instrução ROWID não é compatível com esta versão.
Exemplo de código¶
Oracle:¶
SELECT QUERY_NAME.ROWID from TABLE1;
Snowflake Scripting:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
QUERY_NAME.ROWID from
TABLE1;
Recomendações¶
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0103¶
Gravidade¶
High
Descrição¶
O Snowflake Scripting tem suporte limitado para instruções FOR LOOP
em comparação com o Oracle. Embora o Oracle ofereça suporte a vários tipos de condição (como expressões boolianas, coleções e registros), o Snowflake só permite FOR LOOP
com intervalos inteiros como limites. Qualquer outro formato de loop será marcado como não compatível e precisará ser convertido manualmente.
Cláusulas de controle de iteração do Oracle que o FOR LOOP
do Snowflake não suporta:
single_expression_control
: Avalia uma única expressãovalues_of_control
: Processa valores individuais de uma coleçãoindices_of_control
: Itera através de índices de matrizpairs_of_control
: Processa pares de valores-chave de uma coleção
O recurso cursor_iteration_control
não é suportado no momento. No entanto, você pode convertê-lo em CURSOR FOR LOOP removendo os parênteses da expressão.
FOR i IN (cursor_variable) LOOP NULL; END LOOP;
Deve ser alterado para:
FOR i IN cursor_variable LOOP NULL; END LOOP;
Exemplo de código¶
Código de entrada 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;
Código de saída:¶
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;
$$;
Recomendações¶
Modifique a condição
FOR LOOP
ou selecione um tipo alternativo deLOOP
para obter o mesmo resultado.Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0090¶
Gravidade¶
Medium
Partes da saída do código foram removidas para facilitar a compreensão.
Descrição¶
Esse erro ocorre ao usar um OUTER JOIN no estilo Oracle com o operador (+) em uma cláusula BETWEEN que contém várias tabelas. O Snowflake não é compatível com essa combinação específica de sintaxe. O problema surge especificamente quando a cláusula BETWEEN faz referência a colunas de tabelas diferentes.
Exemplo de código¶
Código de entrada Oracle:¶
SELECT
*
FROM
hr.countries c, hr.regions r, hr.locations l WHERE
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
Código de saída:¶
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(+);
Recomendações¶
Converta manualmente a sintaxe Outer Join para ANSI.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0123¶
Gravidade¶
Medium
Descrição¶
Uma referência de link de banco de dados foi removida do nome do objeto, pois o Snowflake não oferece suporte a links de banco de dados. Somente a parte do nome antes do símbolo @
é mantida.
Exemplo de código¶
Código de entrada:¶
-- 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;
Código de saída:¶
- 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;
Recomendações¶
Certifique-se de que todos os Database Links tenham nomes exclusivos. Se vários Database Links tiverem o mesmo nome e o código for migrado várias vezes, a External Web Interface (EWI) poderá processar as informações incorretamente com base no Database Link que for processado primeiro.
Realoque os objetos de banco de dados referenciados pelos Database Links para a mesma instância de banco de dados do Snowflake que você está usando.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0032¶
Gravidade¶
Medium
Descrição¶
Esse erro ocorre quando você tenta usar um parâmetro não suportado em uma função.
Exemplo de código¶
Código de entrada:¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Código de saída:¶
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;
Recomendações¶
A função é convertida em um modelo de função definida pelo usuário (UDF) que você pode personalizar para corresponder ao comportamento do parâmetro.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0006¶
Esse indicador de alerta antecipado (EWI) não está mais em uso. Consulte a documentação SSC-FDM-OR0047 para obter informações atualizadas.
Gravidade¶
Low
Descrição¶
O parâmetro de sessão TIMESTAMP_OUTPUT_FORMAT deve ser definido como “DD-MON-YY HH24.MI.SS.FF AM TZH:TZM” para garantir que os carimbos de data/hora sejam exibidos no formato correto e manter a equivalência entre os sistemas.
Exemplo de código¶
Código de entrada:¶
SELECT SYSTIMESTAMP FROM DUAL;
Exemplo de saída padrão do TIMESTAMP no Oracle¶
January 13, 2021 04:18:37.288656 PM UTC
Código de saída:¶
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;
Exemplo de saída padrão do TIMESTAMP no Snowflake¶
2021-01-13 08:18:19.720 -080
Recomendações¶
Para modificar a forma como os carimbos de data/hora são exibidos no Snowflake, execute esta consulta:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0057¶
Gravidade¶
Crítico
Partes da saída do código foram removidas para facilitar a compreensão.
Descrição¶
Procedimentos ou funções aninhados (procedimentos/funções definidos dentro de outros procedimentos/funções) não podem ser convertidos no momento. Esse recurso estará disponível em uma versão futura.
Exemplo de código¶
Código de entrada:¶
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;
Código de saída:¶
--** 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;
$$;
Recomendações¶
Nenhuma ação é exigida dos usuários finais.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0047¶
Gravidade¶
Low
Partes do código foram omitidas para manter o exemplo claro e conciso.
Descrição¶
Esse aviso aparece quando a função Oracle TO_NCHAR
foi convertida para a função TO_VARCHAR
do Snowflake durante o processo de migração.
Pode haver situações em que a transformação do código resulte em erros de compilação ou produza uma saída inesperada que seja diferente da original.
Exemplo de código¶
Código de entrada:¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Código de saída:¶
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;
O código mostrado anteriormente gerará um erro quando executado no Snowflake.
Nem todos os cenários resultarão em erros.
Código de entrada:¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Código de saída:¶
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;
O exemplo final é executado com êxito no Snowflake e produz o mesmo resultado quando executado.
Recomendações¶
Não é necessária nenhuma ação da sua parte.
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0016¶
Gravidade¶
Medium
Descrição¶
As funções XML listadas abaixo não são suportadas no momento:
A função EXTRACT recupera dados de documentos XML
EXTRACTVALUE recupera valores específicos dos elementos XML
XMLSEQUENCE converte os dados XML em um formato de tabela
XMLTYPE define um tipo de dados para armazenar o conteúdo XML
Exemplo de código¶
Código de entrada:¶
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>')));
Código de saída:¶
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>')));
Recomendações¶
Para obter suporte adicional, entre em contato com nossa equipe de suporte pelo e-mail snowconvert-support@snowflake.com
SSC-EWI-OR0133¶
Gravidade¶
Medium
Descrição¶
Ao converter uma instrução OPEN FOR
, o SC cria uma atribuição de cursor usando o mesmo nome da variável de cursor original, juntamente com instruções adicionais para replicar seu comportamento. Entretanto, se o código original contiver várias instruções OPEN FOR
usando a mesma variável de cursor, o código convertido terá várias atribuições de cursor com nomes idênticos. Isso resultará em erros de compilação no Snowflake.
Exemplo de código¶
Código de entrada¶
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;
Código de saída¶
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 relacionado¶
SSC-EWI-0030: O SQL dinâmico foi detectado na seguinte instrução.
Recomendações¶
Para corrigir erros de compilação no código de saída, renomeie todas as atribuições de cursor que exibem a mensagem de aviso SSC-EWI-OR0133.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com