DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Criando a versão FloatToStr em PL/Sql no Firebird 2.5

Ao tentar criar uma trigger de LOG no Firebird 2.5, percebi que quando usava valores de campos numeric ou double precision, na string desse log, o valor ficava com as casas decimais representativas, como por exemplo, ao usar num campo de Quantidade:

0,5 ficava 0.500

1000 ficava 1000.00

1 ficava 1000

então para resolver criei essa função.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE OR ALTER PROCEDURE FLOAT_TO_STR (
IFLOAT DOUBLE PRECISION)
RETURNS (
RETORNO VARCHAR(30))
AS
DECLARE VARIABLE VRET VARCHAR(30);
DECLARE VARIABLE VDEC CHAR(1) = ',';
BEGIN
VRET = TRIM(LEADING FROM CAST(:IFLOAT AS VARCHAR(30)));
VRET = REPLACE(:VRET, '.', :VDEC);
 WHILE (RIGHT(:VRET, 1) = '0') DO
VRET = LEFT(:VRET, CHAR_LENGTH(:VRET) -1);
IF (RIGHT(:VRET, 1) = :VDEC) THEN
VRET = LEFT(:VRET, CHAR_LENGTH(:VRET) -1);
RETORNO = :VRET;
  SUSPEND;
END

 

Para usar chame assim:

select retorno from FLOAT_TO_STR(1000.00) from rdb$databse;

O retorno será uma string no formato ‘1000’

select retorno from FLOAT_TO_STR((select quantidade from estoque where codigo = 10)) from rdb$databse;

O retorno será uma string no formato ‘1’ e não mais ‘1.000’

Facebook Comments Box
  • Ivan Cesar
  • 2.347 views
  • 0 comentários
  • 14 de julho de 2016

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados