SnowConvert AI – Teradata – SQL para JavaScript (Procedimentos)¶
GET DIAGNOSTICS EXCEPTION¶
Referência de tradução para converter a instrução Teradata GET DIAGNOSTICS EXCEPTION para o Snowflake Scripting.
Descrição ¶
GET DIAGNOSTICS recupera informações sobre condições de sucesso, exceção ou conclusão da área de diagnóstico.
For more information, see the Teradata GET DIAGNOSTICS documentation.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Amostra de padrões de origem ¶
Teradata ¶
Consulta¶
Snowflake ¶
Javascript¶
Problemas conhecidos¶
Instruções de atributos de condição sem suporte
CLASS_ORIGIN
CONDITION_IDENTIFIER
CONDITION_NUMBER
MESSAGE_LENGTH
RETURNED_SQLSTATE
SUBCLASS_ORIGIN
If¶
A transformação para a instrução IF é:
Teradata
Snowflake
Case¶
A transformação para a instrução Case é:
Teradata
Snowflake
Cursor Declare, OPEN, FETCH e CLOSE¶
A transformação para instruções de cursor é a seguinte:
Teradata
Cursor¶
Snowflake
Cursor JavaScript¶
While¶
A transformação para a instrução while é:
Teradata
While¶
Snowflake¶
While¶
Security¶
A transformação para instruções de segurança é:
Teradata |
Snowflake |
|---|---|
SQL SECURITY CREATOR |
EXECUTE AS OWNER |
SQL SECURITY INVOKER |
EXECUTE AS CALLER |
SQL SECURITY DEFINER |
EXECUTE AS OWNER |
FOR-CURSOR-FOR loop¶
A transformação para loop FOR-CURSOR-FOR é a seguinte:
Teradata
For-Cursor-For-Loop¶
Snowflake
For-Cursor-For-Loop JavaScript¶
Nota: O loop FOR presente no procedimento Teradata é transformado em um bloco FOR em javascript que emula sua funcionalidade.
Parâmetros e variáveis de procedimento referenciados dentro de instruções¶
A transformação para os parâmetros e variáveis do procedimento que são referenciados dentro das instruções do procedimento é:
Teradata
Parameters and variables¶
Snowflake
Parâmetros e variáveis JavaScript¶
Nota: Sempre que um parâmetro de procedimento ou uma variável declarada dentro do procedimento for referenciada dentro de uma instrução do Teradata que precisa ser convertida, essa referência é escapada do texto resultante para preservar a funcionalidade da referência original.
Leave¶
Em Javascript, é possível usar break com um parâmetro adicional, emulando assim o comportamento de um salto do Teradata LEAVE.
Os rótulos também podem ser emulados com o uso de instruções rotuladas em Javascript.
A transformação para a instruçãoLEAVE é:
Teradata
Leave¶
Snowflake
Leave JavaScript¶
Obtendo resultados dos procedimentos¶
Descrição da conversão¶
No Teradata, há duas maneiras de retornar dados de um procedimento. O primeiro é por meio de parâmetros de saída e o segundo por meio de Conjuntos de resultados dinâmicos e Cursores. Ambos são mostrados no exemplo a seguir. Cada ponto importante é explicado a seguir.
Exemplo de retorno de dados de um procedimento armazenado¶
Teradata
Parâmetro Out¶
Snowflake
Parâmetro Out JavaScript¶
Nesse SQL convertido, há várias conversões que ocorrem:
A definição
DYNAMIC RESULT SETS 2é convertida em uma variávelDYNAMIC_RESULTS.
When a cursor with an
WITH RETURNattribute is opened (and therefore a query is executed), its query ID is stored in the_OUTQUERIEScollection to be later returned. The query id is obtained by thegetQueryId()function provided in the JavaScript API for Snowflake stored procedures.Somente as primeiras k-query-IDs são armazenadas na coleção, em que k é o valor da variável
DYNAMIC_RESULTS. Isso é feito para imitar o comportamento do Teradata, que retorna apenas os primeiros k-opened-cursors, mesmo que mais sejam abertos no procedimento armazenado.A combinação de
DECLARE CURSOR WITH RETURNcomPREPAREé convertida para:
The output parameters are supported through the return statement of the procedure. An array is created containing the value of each output parameter and the
_OUTQUERIEScollection. ThePROCRESULTSfunction deals with the creation and filling of this array. See PROCRESULTS() helper for more information.
Exemplo de obtenção de dados de um procedimento armazenado¶
Se os parâmetros de saída e IDs de consulta forem retornados de um procedimento, um segundo procedimento poderá chamar o primeiro para obter esses valores, conforme mostrado abaixo:
Teradata
Procedimento de chamada¶
Snowflake
Procedimento de chamada JavaScript¶
O valor do argumento
P1deProcedure1é retornado e armazenado na variávelX.O
_OUTQUERIESretornado doProcedure1é armazenado na variávelresultset.
Nota
Esse comportamento também se aplica aos parâmetros de INOUT.
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0022: Um ou mais identificadores nessa instrução foram considerados parâmetros por padrão.
SSC-EWI-0023: Análise de desempenho - Um loop contém uma instrução de inserção, exclusão ou atualização.
SSC-EWI-0026: A variável pode exigir uma conversão para data, hora ou carimbo de data/hora.
SSC-FDM-TD0001: Esta mensagem é exibida quando o SnowConvert AI encontra um tipo de dados BLOB.