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:
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.