Como trabalhar com números armazenados em flexfields

Números

Podemos ter flexfields para receber os mais variados tipos de dados: Números, datas, textos, etc.

Mas eles sempre serão armazenados no banco em um único formato: VARCHAR2.

Assim sendo, temos que tomar muito cuidado quando vamos trabalhar com esses valores por causa dos formatos.

Já comentei em outro artigo como devemos tratar datas, mas nesse aqui eu quero falar sobre dados numéricos.

Temos uma API pronta para tratar esses dados em nossos programas PL/SQL, que é a FND_NUMBER.

Ela possui funções que formatam os números para deixar no formato necessário.

Quer saber mais sobre esse assunto? Então acompanhe o artigo para saber mais sobre:

  • Configuração do conjunto de valores no flexfield
  • Conversão do valor dentro do programa PL/SQL

Configuração do conjunto de valores no flexfield

Quando estamos configurando um flexfield que irá receber um número, devemos utilizar um conjunto de valores que aceite números decimais (se for o caso), como o FND_NUMBER15:

FND_NUMBER15

Ele irá garantir que o parâmetro chegue com o formato correto na stored procedure.

Conversão do valor dentro do programa PL/SQL

Antes de trabalhar com o valor contido no flexfield, precisamos convertê-lo para um número realmente, pois até então ele ainda é um VARCHAR2.

Para isso, utilizamos a API FND_NUMBER.CANONICAL_TO_NUMBER.

Exemplo:

DECLARE
  l_return NUMBER;
BEGIN
  -- Converte o número armazenado no flexfield
  l_return := FND_NUMBER.CANONICAL_TO_NUMBER(attribute1);
END;

Conclusão

Para quem não está familiarizado com esses recursos, é muito fácil ter dor de cabeça na hora de trabalhar com esses formatos.

A combinação do conjunto de valores FND_NUMBER15 + a API FND_NUMBER garantirá que você não terá problemas.

Se gostou desse artigo, não deixe de compartilhar com seus amigos.