SnowConvert AI - Oracle - DML STATEMENTS¶
Descrição ¶
As extensões de instrução DML diferem das instruções DML normais porque podem usar elementos de PL/SQL como coleções e registros. Até o momento, alguns desses elementos não são compatíveis com o Snowflake Scripting. Se uma instrução não for suportada, um EWI será adicionado durante a conversão. Outras instruções DML serão convertidos como se não estivessem dentro de um procedimento.
Extensão da instrução INSERT¶
Referência de tradução para converter a extensão de instrução Oracle INSERT para o Script Snowflake
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
A extensão PL/SQL da instrução SQL
INSERTpermite especificar um nome de registro navalues_clausedasingle_table_insertem vez de especificar uma lista de colunas nainsert_into_clause.(Extensão da instrução INSERT da referência de linguagem Oracle PL/SQL)
Snowflake INSERT INTO differs from Snowflake Scripting in variable constraints; needing to have the names preceded by a colon “:” to bind the variables” value.
Recomendações¶
Nota
Esse código foi executado para uma melhor compreensão dos exemplos:
Oracle¶
Snowflake¶
Extensão da instrução INSERT de caso simples¶
Oracle¶
Resultado¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
onze |
Script Snowflake¶
Resultado¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
onze |
Problemas conhecidos¶
1. Records are not supported by Snowflake Scripting¶
Como os registros não são suportados pelo script Snowflake, em vez de usar o registro VALUES, cláusula , é necessário mudá-la para uma cláusula SELECT e dividir as colunas do registro. Para obter mais informações, consulte a Seção de definição do tipo de registro.
Instrução MERGE¶
Referência de tradução para converter a instrução Oracle MERGE para Script Snowflake
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
The
MERGEstatement is used to select rows from one or more sources for update or insertion into a table or view. It is possible to specify conditions to determine whether to update or insert into the target table or view. This statement is a convenient way to combine multiple operations. It lets you avoid multipleINSERT,UPDATE, andDELETEDML statements.MERGEis a deterministic statement. It is not possible to update the same row of the target table multiple times in the sameMERGEstatement. (Oracle PL/SQL Language Reference MERGE Statement)
Sintaxe Oracle MERGE¶
Sintaxe de script Snowflake MERGE¶
Amostra de padrões da origem¶
Amostra de dados auxiliares¶
Nota
Esse código foi executado para uma melhor compreensão dos exemplos:
Oracle¶
Snowflake¶
Caso simples da instrução MERGE¶
Oracle¶
Resultado¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
Snowflake¶
Resultado¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
Instrução MERGE com DELETE e cláusula where¶
To find an equivalence for the DELETE statement and the where clause, it is necessary to reorder and implement some changes in the Snowflake merge statement.
Alterações necessárias:¶
Substitua DELETE where_clause do Oracle por uma nova matchedClause do Snowflake com a instrução AND predicate
Substitua where_clause de merge_insert_clause do Oracle por uma instrução AND predicate no Snowflake notMatchedClause
Oracle¶
Resultado¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Snowflake¶
Resultado¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Aviso
In some cases the changes applied may not work as expected, like the next example:
Oracle¶
Resultado¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
4 |
Dave |
Brown |
Mr |
Snowflake¶
Resultado¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
4 |
Dave |
Brown |
Mr |
Problemas conhecidos¶
1. Oracle’s error_logging_clause is not supported¶
Não há equivalente para a cláusula de registro de erros no Snowflake Scripting.
2. Changed applied do not work as expected¶
Sometimes, the changes applied to achieve the functional equivalence between Oracle’s merge statement and Snowflake’s do not work as expected.
EWIs relacionados¶
SSC-FDM-0006: A coluna do tipo número pode não se comportar de forma semelhante no Snowflake.
SSC-FDM-OR0018: A instrução de mesclagem pode não funcionar como esperado
Instrução SELECTINTO¶
Referência de tradução para converter a instrução Oracle SELECT INTO para Script Snowflake
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
A instrução
SELECTINTOrecupera valores de uma ou mais tabelas do banco de dados (como faz a instrução SQLSELECT) e os armazena em variáveis (o que não é feito pela instrução SQLSELECT). (Instrução SELECT INTO da referência de linguagem Oracle PL/SQL)
Sintaxe Oracle SELECT INTO¶
Sintaxe da cláusula Oracle Into¶
Sintaxe de Oracle Bulk Collect¶
Sintaxe do Script Snowflake SELECT INTO¶
Amostra de padrões da origem¶
Amostra de dados auxiliares¶
Nota
Esse código foi executado para uma melhor compreensão dos exemplos:
Oracle¶
Snowflake¶
Caso simples da instrução SELECTINTO¶
Oracle¶
Resultado¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
um |
Script Snowflake¶
Resultado¶
Problemas conhecidos¶
1. BULK COLLECT INTO is not supported¶
O Script Snowflake não oferece suporte à cláusula BULK COLLECT INTO. Entretanto, é possível usar ARRAY_AGG para construir uma nova variável. Para obter mais informações, consulte a Seção de operações em massa de coleção.
2. Collections and records are not supported¶
Snowflake Scripting does not support the use of collections nor records. It is possible to migrate them using Semi-structured data types as explained in Collections and records.
EWIs relacionados¶
Sem EWIs relacionados.
Solução alternativa para simular o uso de registros¶
Aviso
Esta página está obsoleta, mas foi deixada para fins de compatibilidade. Se quiser ver a seção atualizada, consulte Coleções e registros
Descrição¶
Esta seção descreve como simular o comportamento dos registros Oracle em instruções SELECT e INSERT, usando RESULTSET e CURSORS do Snowflake Scripting.
Snowflake Scripting RESULTSET e CURSOR¶
Sintaxe do Snowflake RESULTSET¶
Recomendações¶
Nota
Nos exemplos a seguir, esse código foi executado para melhor compreensão dos exemplos:
Oracle¶
Snowflake¶
Usando RESULTSET e Cursores em vez de Registros¶
Oracle¶
Resultado¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
um |
Snowflake¶
using cursor
Resultado¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
um |
Problemas conhecidos¶
1. Limitation in the use of RESULTSET¶
RESULTSET é muito limitado em seu uso. Se a instrução table(result_scan(last_query_id()), deve ser usada logo após a execução da consulta RESULTSET. Para obter mais informações, consulte este link.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
SSC-EWI-0056: Criar tipo não suportado.