SnowConvert AI - Oracle - PL/SQL para Javascript¶
Esta é uma referência de tradução para converter instruções PL/SQL para Snowflake JavaScript
Coleções e registros¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Registros¶
Nota
Talvez você também se interesse por Declaração de registros
Oracle¶
Snowflake¶
Aviso
A transformação para «SELECT INTO Record» está em andamento.
Problemas conhecidos¶
Não foram encontrados problemas.
Compilação condicional¶
Descrição¶
Fornece compilação condicional com base no valor verdadeiro de uma condição.
Para obter mais informações sobre compilação condicional IF no Oracle, veja aqui.
Amostra de padrões da origem¶
Possíveis variações de IF¶
Oracle¶
Script Snowflake¶
Problemas conhecidos¶
A transformação da compilação condicional não é suportada no momento.
EWIs relacionados¶
SSC-EWI-0073: Revisão de equivalência funcional pendente.
Instruções de controle¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Instruções IF, ELSIF e ELSE¶
Oracle¶
Snowflake¶
Loop¶
Oracle¶
Snowflake¶
Instrução While¶
Oracle¶
Snowflake¶
EWIs relacionados¶
SSC-EWI-0053: O objeto pode não funcionar.
Declarações¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Declaração e atribuição de variáveis¶
Oracle¶
Snowflake¶
Declaração de variável de registro¶
Nota
Você também pode estar interessado na seção de transformação de registros.
Oracle¶
Snowflake¶
Declaração da variável de registro Rowtype¶
Oracle¶
Snowflake¶
Declaração de constante¶
Oracle¶
Snowflake¶
Declarações e definições de cursor¶
Oracle¶
Nota
Você também pode estar interessado no auxiliar do cursor
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
SSC-EWI-0022: Um ou mais identificadores nesta instrução foram considerados parâmetros por padrão.
SSC-EWI-0026: The variable may require a cast to date, time or timestamp.
Expressões e operadores¶
Expressões¶
Operador de concatenação¶
Nota
Você também pode estar interessado no ajudante do Concat.
A concatenação do Oracle é obtida no JavaScript usando o literal Template. Além disso, ele usa o Auxiliar Concat para tratar adequadamente as concatenações com nulos.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Operadores de lógica¶
Oracle¶
Snowflake¶
Nota
Você também pode estar interessado no ajudante do IS NULL.
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Operador de comparação¶
Documentação em andamento.
IS [NOT] NULL¶
Nota
Você também pode estar interessado no ajudante do IS NULL.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
OperadorLike¶
Nota
Você também pode estar interessado no ajudante do operador Like.
Quando houver uma operação LIKE, a função do auxiliar será chamada em seu lugar.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Operador Between¶
Nota
Você também pode estar interessado no auxiliar do operador Between.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Operador IN¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Expressões boolianas¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Expressões de função¶
Para expressões de função dentro de procedimentos, elas estão sendo convertidas para a função ou expressão correspondente no Snowflake. Essas chamadas de função são passadas para um EXEC com um CALL ou um SELECT, dependendo do valor convertido.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Para obter mais informações sobre as transformações da função, consulte aqui.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
SSC-EWI-OR0013: o parâmetro NLS é incompatível.
SSC-FDM-OR0042: O tipo de data transformado em carimbo de data/hora tem um comportamento diferente.
Funções definidas pelo usuário¶
Descrição geral¶
A maioria dos Oracle UDFs e dos UDFs dentro de pacotes está sendo transformada em procedimentos armazenados do Snowflake para manter a equivalência funcional, pois Snowflake UDFs têm algumas limitações na execução de instruções DML (Data Manipulation Language).
Conversão¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Função Create¶
Oracle¶
Snowflake¶
Função dentro de pacote¶
Oracle¶
Snowflake¶
Mapeamento do tipo de dados de retorno¶
Tipo Oracle PL SQL |
Equivalente ao Snowflake |
|---|---|
NUMBER |
FLOAT |
LONG |
VARCHAR |
VARCHAR2 |
STRING |
BLOB |
BINARY |
BFILE |
BINARY |
Chamada¶
Consultas internas¶
Calls of functions that were transformed to procedures inside queries are converted into an empty Snowflake JavaScript UDF. This Snowflake UDF is generated in the STUB_UDF.sql file inside the UDF Helpers directory.
Oracle¶
Snowflake¶
Dentro de outras funções ou procedimentos armazenados¶
As funções que são convertidas em procedimentos são chamadas usando o auxiliar EXEC do Snowflake.
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Diferentes casos e limitações¶
Funções com DMLs¶
Essas funções não podem ser executadas em consultas no Oracle, portanto, seu uso será limitado ao transformá-las em procedimentos do Snowflake.
Oracle¶
Snowflake¶
Funções com apenas um SELECT INTO¶
Essas funções são transformadas em funções Snowflake SQL removendo a parte INTO da seleção.
Oracle¶
Snowflake¶
Funções apenas com lógica¶
UDFs que não usam nenhuma instrução SQL são convertidos em Snowflake JavaScript UDFs.
Nota
Quando as funções SQL internas são incluídas na lógica, a função definida pelo usuário é convertida em um procedimento do Snowflake. A conversão de funções internas para um equivalente em JavaScript está planejada para ser entregue no futuro.
Exemplos de funções internas: UPPER(), TRIM(), ABS().
Oracle¶
Snowflake¶
Funções com mais de uma instrução SQL¶
Aviso
UDFs transformados em procedimentos não podem ser chamados a partir de uma consulta.
Oracle¶
Snowflake¶
Funções com apenas lógica e funções SQL internas¶
Nota
This transformation is planned to be delivered in the future, currently all functions are being transformed to stored procedures.
Oracle¶
Snowflake¶
RETURN CASE¶
A transformação é a mesma transformação quando o CASE é usado para designar uma variável.
Oracle¶
Snowflake¶
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0022: Um ou mais identificadores nesta instrução foram considerados parâmetros por padrão.
SSC-EWI-0073: Revisão de equivalência funcional pendente.
SSC-FDM-0029: A função definida pelo usuário foi transformada em um procedimento do Snowflake.
Pacotes¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Declaração de pacote¶
Esta seção mostra a equivalência entre os membros da Declaração de Pacote Oracle e as instruções do Snowflake.
Opções de tradução de pacote¶
Há duas opções para migrar pacotes, cada opção afetará diretamente a nomeação dos objetos dentro do pacote. Veja aqui como você pode alterar esse modo na UI.
Vamos supor o seguinte cenário no Oracle:
Um pacote chamado
MY_PACKAGE.Um procedimento dentro do pacote chamado
MY_PROCEDURE.
Opção 1 (Usando o novo esquema)¶
Com essa opção, os pacotes são transformados em novos esquemas. Os elementos do pacote, como funções e procedimentos, são criados dentro do novo esquema. Se o pacote já estiver dentro de um esquema, o nome do pacote será unido ao nome do esquema com um sublinhado.
Essa é a opção padrão para converter pacotes.
Resultado:
A schema will be created with the name
MY_PACKAGE.O nome qualificado do procedimento será atualizado para
MY_PACKAGE.MY_PROCEDURE.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA_MY_PACKAGE.MY_PROCEDURE.
Opção 2¶
Com essa opção, o nome dos elementos do pacote será unido ao nome do pacote com um sublinhado. Não serão criados novos esquemas.
Resultado:
O nome do procedimento será atualizado para
MY_PACKAGE_MY_PROCEDURE.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA.MY_PACKAGE_MY_PROCEDURE.
Create Package¶
A instrução CREATE PACKAGE será convertida em uma instrução CREATE SCHEMA. Qualquer membro dentro do pacote será convertido fora do pacote.
Oracle¶
Transformação com a opção 1 (usando o novo esquema)¶
Transformação com a opção 2¶
Com essa opção, o esquema não será gerado, e somente os elementos internos serão mantidos, mas com seus nomes renomeados.
Declaração de procedimentos e funções¶
As instruções de procedimentos e funções não são necessárias para a transformação para o Snowflake. As instruções de procedimentos ou funções existentes serão comentadas.
Oracle¶
Transformação com a opção 1 (usando o novo esquema)¶
Nota
Observe que, para a opção 1, a definição de PROCEDURE no pacote é removida, pois não é exigida pelo Snowflake.
Declaração de variáveis¶
Nota
Você também pode estar interessado no auxiliar de variáveis.
As variáveis do pacote Oracle são transformadas em variáveis de sessão do Snowflake. Um prefixo é adicionado aos valores para saber de que tipo são dentro dos procedimentos armazenados. Se o valor for nulo, será adicionado um «~». Por esse motivo, as variáveis que dependem de outras variáveis exigirão um SUBSTR e um CAST.
Tipo de dados e mapeamentos de código¶
Tipo de dados ou valor |
Código |
|---|---|
Tipos numéricos |
# |
Tipos de data e hora |
& |
Tipos de cadeia de caracteres |
$ |
Valores NULL |
~ |
A transformação das variáveis será sempre a mesma, independentemente da opção de transformação.
Oracle¶
Snowflake¶
Declaração de constantes¶
A declaração de constantes será declarada dentro do procedimento ou das funções que as utilizam. A declaração de constantes de pacotes existentes será comentada e um aviso será adicionado.
Oracle¶
Transformação com a opção 1
Nota
Observe que a definição de PROCEDURE no pacote foi removida, pois não é exigida pelo Snowflake.
Outros membros do pacote¶
A transformação de outros membros do pacote, como cursores, exceções e tipos definidos pelo usuário, ainda é um trabalho em andamento.
Oracle¶
Transformação com a opção 1¶
Definição do corpo do pacote¶
Esta seção mostra a equivalência entre os membros do Oracle Package Body Definition e as instruções do Snowflake.
Create Package Body¶
Os elementos dentro de um corpo de pacote serão extraídos do pacote. O corpo do pacote desaparecerá, portanto, a instrução Create Package Body será removida no código convertido.
Definição do procedimento¶
Procedimentos armazenados dentro de pacotes usam as mesmas transformações definidas na referência de tradução de PL/SQL.
Oracle¶
Transformação com a opção 1¶
Transformação com a opção 2¶
Definição da Função¶
As funções dentro dos corpos dos pacotes são convertidas em procedimentos armazenados do Snowflake.
Oracle¶
Transformação com a opção 1¶
Transformação com a opção 2¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Outros membros do corpo do pacote¶
Consulte a seção «outros membros do pacote» em Declaração de pacote
Uso de membros do pacote¶
Chamada de procedimentos dentro de pacotes¶
Se o procedimento estiver dentro de um pacote e o pacote estiver dentro de um esquema, a chamada será renomeada.
Oracle¶
Transformação com a opção 1¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Transformação com a opção 2¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Com essa opção, a chamada dos procedimentos será renomeada de acordo com a renomeação da declaração do procedimento. O nome do esquema será separado do nome do procedimento por um ponto.
Snowflake¶
Variáveis de pacote dentro de procedimentos¶
Nota
As variáveis de pacotes são transformadas em variáveis de sessão. Essas variáveis podem ser usadas por meio do “auxiliar de variáveis de pacote”.
Nota
Esta amostra está usando variáveis declaradas na seção de pacotes Declaração de variáveis.
Oracle¶
Snowflake¶
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0053: O objeto pode não funcionar.
SSC-EWI-OR0049: Ainda não há compatibilidade com constantes de pacote no pacote com estado.
Procedimentos¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Exemplo 1: Conversão de procedimento básico
Oracle¶
Snowflake¶
Exemplo 2: Conversão de procedimento com instruções básicas: Declaration, Assignment, Cursor Declaration, FOR Cursor, Open, LOOP, CLOSE, IF,
Oracle¶
Snowflake¶
Chamada de procedimentos dentro de outro procedimento¶
Oracle¶
Snowflake¶
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0022: Um ou mais identificadores nesta instrução foram considerados parâmetros por padrão.
SSC-FDM-OR0012: as instruções COMMIT e ROLLBACK exigem configuração adequada para funcionar conforme o esperado.
Elementos de linguagem SQL¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Cursor FOR LOOP¶
Nota
Você também pode se beneficiar do auxiliar do cursor e da declaração do cursor.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Instruções OPEN, FETCH e CLOSE¶
Nota
Você também pode se beneficiar do auxiliar do cursor e da declaração do cursor.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Aviso
Transformation for the following lines corresponds to custom types, which are work in progress:
Atualmente, a próxima instrução está sendo emitida, mas a classe ainda não está sendo criada. No futuro, um aviso será aplicado a todos os usos de tipos personalizados sem suporte.
Cursor implícito SQL¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
EXIT¶
Aviso
A transformação dos rótulos é um trabalho em andamento.
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Execute Immediate¶
Nota
Você também pode estar interessado no auxiliar EXEC
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Aviso
Como a cláusula «RETURNING INTO» exige uma análise especial da instrução executada, sua conversão está planejada para ser entregue no futuro.
Aviso
Transformation for the following line corresponds to collection types, which is work in progress:
Atualmente, a próxima instrução está sendo emitida, mas a classe ainda não está sendo criada. No futuro, um aviso será aplicado a todos os usos de tipos personalizados sem suporte.
Além disso, o seguinte EXECUTE IMMEDIATE relacionado a BULK COLLECT na variável sals também está em andamento.
Erros e tratamento de exceções¶
Nota
Você também pode estar interessado no auxiliar Raise
Uso do auxiliar Raise¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Quando não há o manipulador OTHERS, o SnowConvert AI usa a definição “padrão” de maiúsculas/minúsculas na opção que gera o objeto de erro original.
Commit¶
Nota
Você também pode estar interessado no auxiliar EXEC
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
CASE¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
CASE em uma atribuição de variável¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Chamada para programas externos em C ou Java¶
Oracle¶
Snowflake¶
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0022: Um ou mais identificadores em uma instrução específica são considerados parâmetros por padrão.
SSC-EWI-0053: O objeto pode não funcionar.
SSC-EWI-0073: Revisão de equivalência funcional pendente.
SSC-EWI-OR0052: A declaração de exceção é tratada pela função raise.
SSC-EWI-OR0072: Membro processual incompatível.
SSC-EWI-OR0075: Atual da cláusula incompatível com o Snowflake.
SSC-EWI-OR0104: Variável de coleção inutilizável.
SSC-FDM-OR0007: O Snowflake não é compatível com o controle de versão de objetos. Os desenvolvedores devem considerar abordagens alternativas para o controle de versão do código.
SSC-FDM-OR0009: SQL IMPLICIT CURSOR VALUES MAY DIFFER.
SSC-FDM-OR0011: O argumento booleano foi removido porque as opções «adicionar à pilha» não são compatíveis.
SSC-FDM-OR0012:: as instruções COMMIT e ROLLBACK exigem configuração adequada para funcionar conforme o esperado.
Instruções DDL - DML¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Nota
Todas as instruções usam o auxiliar EXEC.
SELECT¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
SELECT INTO¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
INSERT e INSERTINTOSELECT¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
DELETE¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
UPDATE¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
MERGE¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0022: Um ou mais identificadores em uma instrução específica são considerados parâmetros por padrão.
Sinônimos¶
Os sinônimos usados nos blocos PL/SQL são alterados para o objeto referenciado e o esquema será adicionado, se necessário.
Esquema implícito adicionado¶
Quando o procedimento ou a função estiver dentro de um esquema e o sinônimo estiver dentro desse esquema, mas estiver sendo usado sem o esquema, o código convertido adicionará o esquema.
Oracle¶
Snowflake¶
Adicionado o esquema do objeto referenciado¶
Quando o sinônimo fizer referência a um objeto que esteja em um esquema específico, o nome do esquema será adicionado ao objeto referenciado.
Oracle¶
Snowflake¶
EWIs relacionados¶
SSC-FDM-OR0005: Sinônimos não são compatíveis com o Snowflake, mas as referências a este sinônimo foram alteradas pelo nome do objeto original.
SSC-FDM-OR0042: O tipo de data transformado em carimbo de data/hora tem um comportamento diferente.
Acionadores¶
Aviso
Os acionadores não são compatíveis com o Snowflake e, portanto, não serão migrados automaticamente.
No momento, o Snowflake não oferece um mecanismo direto para acionadores, mas alguns recursos do Snowflake podem ser usados para obter resultados semelhantes.
Recomendamos que você faça uma análise de seus acionadores e os classifique por finalidade:
Acionadores de auditoria: a intenção desses acionadores é capturar informações e registrar as alterações feitas em algumas tabelas para outras tabelas.
Acionadores de inicialização: a intenção desses acionadores é adicionar alguns valores padrão aos novos registros. Em geral, eles estão antes ou depois dos acionadores de inserção
Acionadores de barreira de regra de negócios: geralmente se aplicam a BEFORE/AFTER DELETE ou UPDATE. O objetivo desses acionadores é criar uma barreira para evitar a entrada ou a exclusão de dados que violam algumas regras comerciais.
Em vez de Acionadores: usado, por exemplo, para permitir inserções em exibições, não é suportado. A recomendação será transformar essa lógica em um procedimento armazenado e introduzir chamadas sempre que elas forem usadas para operações de inserção/exclusão/atualização.
Acionadores de banco de dados: não podem ser replicados, também é recomendável encapsular essa lógica em um procedimento armazenado. Mas essa lógica precisará ser invocada manualmente.
Acionadores genéricos After: para alguns acionadores after, streams e tarefas podem ser aproveitados, consulte a seção abaixo.
Acionador de auditoria¶
Antes de acionadores UPDATE para auditoria, casos como esse não podem ser tratados diretamente. Para o caso INSERT, você pode usar o caso do valor padrão explicado para o acionador de inicialização. No entanto, no caso da atualização, a única opção será usar uma tarefa, conforme explicado mais adiante para os acionadores AFTER. No entanto, LAST_UPDATE não será exato, haverá um deslocamento porque a modificação registrada será no momento da execução da tarefa (por exemplo, se as tarefas forem executadas a cada 5 minutos, LAST_UPDATE será registrado 5 minutos depois).
Nos casos de UPDATE, não é possível tentar capturar CURRENT_USER.
Outros casos de acionadores AUDIT são quando eles registram alterações de uma tabela em uma tabela de atualização. A técnica de acionamento AFTER descrita mais adiante pode ser usada, mas novamente as informações de USER não podem ser rastreadas e as informações de TIME não serão precisas.
Acionador de inicialização¶
Para esses acionadores, você pode usar os valores de coluna padrão do Snowflake, por exemplo, para valores de sequência.
Você também pode usar CURRENT__ USER() e CURRENT_TIMESTAMP em vez de USER ou SYS_TIMESTAMP_
Isso se aplica somente aos casos BEFORE INSERT ou AFTER INSERT.
Barreira de regras de negócios¶
Nesses casos, você precisará alinhar as ações de acionamento após/antes da execução de DELETE ou UPDATE.
Uma tarefa não é recomendada aqui porque as tarefas são executadas segundo um cronograma e, portanto, a linha já terá sido modificada.
Aviso
Esta seção mostra uma solução alternativa conhecida para implementar parcialmente acionadores AFTER.
GENERIC AFTER TRIGGER¶
Exemplo 1: Conversão básica do acionador¶
Oracle¶
Snowflake¶
Nota
O código dos ajudantes do SnowConvert AI removido do exemplo. Você pode encontrá-los aqui.
Explicação detalhada do código do Snowflake¶
Fluxos¶
Eles se encarregam de armazenar as alterações feitas na tabela. Note que:
Eles armazenarão o delta entre o estado atual da tabela e o último deslocamento armazenado pelo próprio fluxo. Leve isso em consideração para fins de faturamento.
Observe que eles não armazenam as informações das atualizações, mas sim as armazenam como uma inserção.
Da mesma forma, eles não podem ser configurados para rastrear apenas exclusões ou apenas atualizações e, portanto, devem ser filtrados no procedimento e na própria tarefa (veja abaixo).
Procedimentos¶
Eles se encarregam de executar a(s) instrução(ões) SQL do acionador. Note que:
É necessário liberar o fluxo, por isso a criação de um novo fluxo no final do procedimento.
Quaisquer ações que precisem ser filtradas (como acionadores somente AFTER-INSERTs) precisarão ser filtradas no próprio procedimento armazenado.
Tarefas¶
Elas se encarregam de verificar regularmente se há alterações no fluxo e, consequentemente, executam a(s) instrução(ões) SQL do acionador. Note que:
As tarefas funcionam segundo um cronograma, uma ação não as dispara. Isso significa que haverá verificações programadas de acionamento sem alterações de dados realizadas na tabela.
As tarefas não podem ser configuradas para serem executadas mais de uma vez a cada sessenta (60) segundos, pois o tempo mínimo é de um (1) minuto.
Quando o fluxo tiver detectado alterações, haverá, na pior das hipóteses, sessenta (60) segundos de atraso entre a detecção da alteração e a execução do acionador.
Embora a adição de WHEN evite a execução da tarefa, o Snowflake ainda adiciona encargos toda vez que é avaliado; e esses encargos serão adicionados à conta quando o acionador for realmente executado.
A tarefa precisa de um warehouse para ser executada e deverá ser definida manualmente pelo cliente.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
Atributo TYPE¶
Descrição¶
Este capítulo está relacionado à transformação do atributo TYPE quando ele faz referência a uma coluna, variável, registro, coleção ou cursor. A transformação envolve a obtenção do tipo de dados do item referenciado e a substituição do atributo TYPE do item referenciado pelo tipo de dados obtido.
Amostra de padrões da origem¶
Atributo TYPE para colunas¶
Nesse caso, o item referenciado é uma coluna de uma tabela criada anteriormente.
Oracle¶
Snowflake¶
Atributo TYPE para variáveis¶
Nesse caso, o item referenciado é uma variável declarada anteriormente.
Oracle¶
Snowflake¶
Nota
Mais informações sobre o tipo de dados FLOAT podem ser encontradas na seção tipo de dados FLOAT
Atributo TYPE para registros¶
Nesse caso, o item referenciado é um registro declarado anteriormente.
Oracle¶
Snowflake¶
No exemplo anterior, a variável que faz referência à variável de registro é alterada para OBJECT, que é igual à variável de registro, e a variável que faz referência ao campo de registro é alterada para o tipo de dados do campo de registro (NUMBER (38, 18)).
Aviso
Essas alterações não funcionam para registros incorporados.
Nota
Mais informações sobre registros podem ser encontradas na seção Coleção e registros.
Atributo TYPE para coleções¶
Nesse caso, o item referenciado é uma variável de coleção, mas como não há suporte para coleções, o atributo TYPE do item referenciado é alterado para o tipo de dados VARIANT.
Oracle¶
Snowflake¶
Atributo TYPE para cursores¶
Nesse caso, o item referenciado é uma variável de cursor, mas como não há suporte para os cursores REF, o atributo TYPE do item referenciado é alterado para o tipo de dados VARIANT.
Oracle¶
Snowflake¶
Nota
Nos casos em que o tipo de dados do item referenciado não pode ser obtido, o atributo TYPE do item referenciado é alterado para VARIANT.
Conhece os problemas¶
1. Cursors and collections declarations are not supported.¶
As instruções de variáveis de coleção e cursor ainda não são compatíveis, portanto, o atributo TYPE do item de referência é alterado para VARIANT e um aviso é adicionado nesses casos.
2. Original data type could not be obtained.¶
Quando o tipo de dados do item referenciado não puder ser obtido, o atributo TYPE do item referenciado será alterado para VARIANT e um aviso será adicionado.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
SSC-EWI-0056: Criar tipo não suportado.
SSC-EWI-0058: A funcionalidade é atualmente incompatível com o Script Snowflake.
SSC-EWI-0062: O uso do tipo personalizado foi alterado para variante.
SSC-EWI-OR0129: A instrução abaixo tem usos de cursores aninhados.
SSC-FDM-0006: A coluna do tipo número pode não se comportar de forma semelhante no Snowflake.