Uma variável ESQL é um campo de dados utilizado
para ajudar a processar uma mensagem.
Para utiliza uma variável, primeiro você deve declará-la e
informar seu tipo. O tipo de dados de uma variável é fixo; se você escrever
código ESQL que atribua um valor de tipo diferente, ou será
implementado um lançamento implícito para o tipo de dados do destino
ou ocorrerá uma exceção (se o lançamento implícito não for suportado).
Para definir uma variável e nomeá-la, utilize a instrução DECLARE.
Nota: Os nomes de variáveis ESQL fazem distinção entre maiúsculas e minúsculas, portanto, é
importante certificar-se de utilizar o tipo de letra correto em todos os locais. A maneira mais simples
de garantir isso é sempre definir variáveis utilizando nomes com letras maiúsculas.
O
Message Broker Toolkit sinaliza, com marcadores de avisos, as variáveis que não foram definidas. É recomendável remover todos estes avisos antes de implementar um fluxo de mensagens.
Você pode designar
um valor inicial para a variável na instrução DECLARE. Se um valor inicial
não for especificado, as variáveis escalares serão inicializadas com o valor especial NULL,
enquanto as variáveis ROW serão inicializadas em um estado vazio. Subseqüentemente, você
pode alterar o valor da variável utilizando a instrução SET.
Existem três tipos de nó interno que podem conter
código ESQL e, portanto, suportam a utilização de variáveis ESQL:
Escopo, Existência e Compartilhamento de Variáveis
Quão extensa e por quanto tempo uma variável ESQL específica fica disponível são descritos
por seu escopo, existência e compartilhamento:
O escopo de uma variável é uma medida do intervalo no qual ela é visível. No ambiente do intermediário, o escopo de variáveis
normalmente é limitado ao nó individual.
A existência de
uma variável é uma medida do tempo durante o qual ela mantém seu
valor. No ambiente do intermediário, a existência de uma variável varia, mas geralmente
é restrita à existência de um encadeamento em um nó.
As características de compartilhamento de uma variável indicam se cada encadeamento tem sua própria
cópia da variável ou se uma variável é compartilhada entre muitos encadeamentos.
No ambiente do intermediário, as variáveis geralmente não são compartilhadas.
Tipos de Variável
Você pode utilizar a
Instrução DECLARE para definir três tipos de variável:
- Externo
- As variáveis externas (definidas com a palavra-chave EXTERNAL) também são conhecidas
como UDPS (Propriedades Definidas pelo Usuário): consulte Propriedades Definidas pelo Usuário no ESQL.
Elas existem durante toda a existência de um fluxo de mensagens e são visíveis para todas
as mensagens que passam pelo fluxo. Seus valores iniciais
(opcionalmente configurados pela instrução DECLARE) podem ser modificados, no tempo de design,
pelo editor de Fluxo de Mensagens ou, no tempo de implementação, pelo editor de
BAR. Seus valores não podem ser modificados pelo ESQL.
- Normal
- As variáveis "normais" possuem uma existência de apenas uma mensagem que é transmitida
por um nó. Elas são visíveis apenas a essa mensagem. Para definir uma variável "normal",
omita as palavras-chave EXTERNAL e SHARED.
- Compartilhado
- As variáveis compartilhadas podem ser utilizadas para implementar um cache em memória no fluxo de mensagens, consulte Otimizando Tempos de Resposta do Fluxo de Mensagens.
As variáveis compartilhadas têm uma existência longa e são visíveis para várias mensagens transmitidas por um fluxo, consulte
Variáveis de Existência Longa. Elas ocorrem durante a
existência do processo do grupo de execução, a existência do fluxo ou nó ou a existência
do SQL do nó que declara a variável (aquele que for o mais curto).
Elas são inicializadas quando a primeira mensagem é transmitida pelo fluxo ou
nó, após a inicialização de cada intermediário.
Consulte também
a opção ATOMIC do Instrução BEGIN ... END. A construção BEGIN ATOMIC
é útil quando várias alterações precisam ser feitas em uma variável compartilhada
e é importante evitar que outras instâncias vejam os estados intermediários
dos dados.
Para obter informações sobre tipos específicos de variáveis, consulte: