SnowConvert AI - Oracle - PACKAGES¶
Descrição¶
Use a instrução
CREATEPACKAGEpara criar a especificação de um pacote armazenado, que é uma coleção encapsulada de procedimentos relacionados, funções e outros objetos de programa armazenados juntos no banco de dados. A especificação do pacote declara esses objetos. O corpo do pacote, especificado posteriormente, define esses objetos. (Instrução CREATE PACKAGE da referência de linguagem Oracle PL/SQL)
O Snowflake não tem um equivalente para pacotes Oracle, então, para manter a estrutura, os pacotes são transformados em um esquema, e todos os seus elementos são definidos dentro dele. Além disso, o pacote e seus elementos são renomeados para preservar o nome do esquema original.
BODY¶
Descrição¶
O cabeçalho de PACKAGE BODY é removido e cada procedimento ou definição de função é transformado em uma função ou procedimento autônomo.
CREATE PACKAGE SYNTAX¶
Amostra de padrões da origem¶
Nota
As consultas a seguir foram transformadas com a opção PackagesAsSchema desativada.
Oracle¶
Snowflake¶
Snowflake¶
Problemas conhecidos¶
Não foram encontrados problemas.
Constantes¶
Especificação de tradução para constantes de pacote
Descrição¶
PACKAGE CONSTANTS pode ser declarado na declaração do pacote ou em PACKAGE BODY. Quando uma constante de pacote é usada em um procedimento, uma nova variável é declarada com o mesmo nome e valor da constante, de modo que o código resultante é bastante semelhante à entrada.
Sintaxe da declaração de constante Oracle¶
Amostra de padrões da origem¶
Exemplo de código auxiliar¶
Oracle¶
Snowflake¶
Oracle¶
Resultado¶
ID |
|---|
9999 |
Snowflake¶
Resultado¶
ID |
|---|
9999 |
Nota
Observe que a definiçãoPROCEDURE está sendo removida, pois não é necessária no Snowflake.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-FDM-0006: A coluna do tipo número pode não se comportar de forma semelhante no Snowflake.
DECLARATION¶
Descrição¶
A declaração é convertida em um esquema, de modo que cada elemento interno é declarado dentro desse esquema. Todos os elementos presentes no pacote são comentados, exceto VARIABLES, que tem uma transformação adequada.
CREATE PACKAGE SYNTAX¶
Amostra de padrões da origem¶
Nota
As consultas a seguir foram transformadas com a opção PackagesAsSchema desativada.
Oracle¶
Snowflake¶
Nota
Observe que as definições de FUNCTION e PROCEDURE estão sendo removidas, pois não são necessárias no Snowflake.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
VARIABLES¶
Especificação de tradução para variáveis de pacote
Descrição¶
PACKAGE VARIABLES pode ser declarado na declaração do pacote ou em PACKAGE BODY. Devido ao seu comportamento, essas variáveis são convertidas em variáveis de sessão do Snowflake, de modo que cada uso ou atribuição é convertido para seu equivalente no Snowflake.
Sintaxe da declaração Oracle Variable¶
Amostra de padrões da origem¶
Exemplo de código auxiliar¶
Oracle¶
Snowflake¶
Declaração de variáveis¶
Oracle¶
Script Snowflake¶
Uso de variáveis¶
Os usos de variáveis de pacote são transformados na função do Snowflake GETVARIABLE que acessa o valor atual de uma variável de sessão. Uma conversão explícita é adicionada ao tipo de dados da variável original para manter a equivalência funcional nas operações em que essas variáveis são usadas.
Oracle¶
Resultado¶
ID |
|---|
100 |
Snowflake¶
Resultado¶
ID |
|---|
100 |
Nota
Observe que a definição de PROCEDURE no pacote foi removida, pois não é exigida pelo Snowflake.
Atribuição regular variável¶
Quando uma variável de pacote é atribuída usando o operador :=, a atribuição é substituída por um SnowConvert AI UDF chamado UPDATE_PACKAGE_VARIABLE_STATE que é uma abstração da função [SETVARIABLE] do Snowflake(https://docs.snowflake.com/en/sql-reference/session-variables.html#session-variable-functions).
Oracle
Oracle¶
Resultado¶
ID |
|---|
200 |
Snowflake¶
Resultado¶
ID |
|---|
200 |
Nota
Observe que a definição de PROCEDURE no pacote foi removida, pois não é exigida pelo Snowflake.
Atribuição de variável como argumento de saída¶
Quando uma variável de pacote é usada como argumento de saída, uma nova variável é declarada dentro do procedimento. Essa variável armazenará o valor do argumento de saída do procedimento e, em seguida, será usada para atualizar a variável de sessão que faz referência à variável de pacote usando o UPDATE_PACKAGE_VARIABLE_STATE mencionado acima.
Oracle¶
Resultado¶
ID |
|---|
1000 |
Snowflake¶
Resultado¶
ID |
|---|
1000 |
Nota
Observe que a definição de PROCEDURE no pacote foi removida, pois não é exigida pelo Snowflake.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-FDM-0006: A coluna do tipo número pode não se comportar de forma semelhante no Snowflake.