Sumário

Search

  1. Prefácio
  2. A Linguagem de Transformação
  3. Constantes
  4. Operadores
  5. Variáveis
  6. Datas
  7. Funções
  8. Criação de funções personalizadas
  9. Referência de API da Função Personalizada

Referência de Linguagem de Transformação

Referência de Linguagem de Transformação

DECODE

DECODE

Pesquisa uma porta para um valor que você especifica. Se a função localizar o valor, ela retornará um valor de resultados, que é definido por você. Você pode criar um número ilimitado de pesquisas dentro de uma função DECODE.
Se usar DECODE para pesquisar um valor em uma porta de string, você poderá cortar os espaços em branco à direita com a função RTRIM ou incluir os espaços em branco na string de pesquisa.

Sintaxe

DECODE(
value
,
first_search
,
first_result
[,
second_search
,
second_result
]...[,
default
] )
A tabela a seguir descreve os argumentos para este comando:
Argumento
Requerido/
Opcional
Descrição
valor
Requerido
Qualquer tipo de dados, exceto Binário. Passa os valores que você deseja pesquisar. Você pode inserir qualquer expressão de transformação válida.
pesquisar
Requerido
Qualquer valor com o mesmo tipo de dados que o argumento de valor. Passa os valores que você deseja pesquisar. O valor da pesquisa deve corresponder ao argumento de valor. Você não pode pesquisar uma parte de um valor. Além disso, o valor da pesquisa faz distinção entre maiúsculas e minúsculas.
Por exemplo, se você quiser pesquisar a string 'Halogen Flashlight' em uma porta específica, será necessário inserir 'Halogen Flashlight, não apenas 'Halogen'. Se você inserir 'Halogen', a pesquisa não encontrará um valor correspondente. Você pode inserir qualquer expressão de transformação válida.
resultado
Requerido
Qualquer tipo de dados, exceto Binário. O valor a ser retornado se a pesquisa encontrar um valor correspondente. Você pode inserir qualquer expressão de transformação válida.
padrão
Opcional
Qualquer tipo de dados, exceto Binário. O valor a ser retornado se a pesquisa não encontrar um valor correspondente. Você pode inserir qualquer expressão de transformação válida.

Valor de Retorno

First_result
se a pesquisa encontrar um valor correspondente.
Valor padrão se a pesquisa não encontrar um valor correspondente.
NULL se você omitir o argumento padrão e a pesquisa não encontrar um valor correspondente.
Mesmo se várias condições forem atendidas, o
Serviço de Integração do PowerCenter
retornará o primeiro resultado correspondente.
Se os dados contiverem caracteres multibyte e a expressão DECODE comparar dados de string, o valor retornado dependerá da página de código e do modo de movimento de dados do
Serviço de Integração do PowerCenter
.

DECODE e Tipos de Dados

Quando você usar DECODE, o tipo de dados do valor retornado será sempre o mesmo tipo de dados do resultado com a maior precisão.
Por exemplo, você tem a seguinte expressão:
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', 1.414213562,          'Archimedes', 3.141592654,          'Pi', 3.141592654 )
Os valores retornados nessa expressão são 5, 1,414213562 e 3,141592654. O primeiro resultado é um Inteiro e os outros resultados são Decimais. O tipo de dados Decimal tem uma precisão maior que Integer. Essa expressão sempre grava o resultado como um Decimal.
Quando você executar uma sessão no modo de alta precisão, se pelo menos um resultado for Double, o tipo de dados do valor retornado será Double.
Não é possível criar uma função DECODE com os valores retornados numéricos e de string.
Por exemplo, a seguinte expressão é inválida:
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', '1.414213562',          'Archimedes', '3.141592654',          'Pi', 3.141592654 )
Ao validar a expressão acima, você recebe esta mensagem de erro:
Function cannot resolve operands of ambiguously mismatching datatypes.

Exemplos

Você pode usar DECODE em uma expressão que pesquisa um ITEM_ID específico e retorna o ITEM_NAME:
DECODE( ITEM_ID, 10, 'Flashlight',                  14, 'Regulator',                  20, 'Knife',                  40, 'Tank',                  'NONE' )
ITEM_ID  
RETURN VALUE
10
Flashlight
14
Regulator
17
NONE
20
Knife
25
NONE
NULL
NONE
40
Tank
DECODE retorna o valor padrão de NONE nos itens 17 e 25 porque os valores de pesquisa não corresponderam ao ITEM_ID. Além disso, DECODE retorna NONE para o ITEM_ID NULL.
A seguinte expressão testa várias colunas e condições, avaliadas na ordem de cima para baixo de TRUE ou FALSE:
DECODE( TRUE,         Var1 = 22, 'Variable 1 was 22!',         Var2 = 49, 'Variable 2 was 49!',         Var1 < 23, 'Variable 1 was less than 23.',         Var2 > 30, 'Variable 2 was more than 30.',         'Variables were out of desired ranges.')
Var1   
Var2   
RETURN VALUE
21
47
Variable 1 was less than 23.
22
49
Variable 1 was 22!
23
49
Variable 2 was 49!
24
27
Variables were out of desired ranges.
25
50
Variable 2 was more than 30.