[firebase-br] Zeros a Esquerda no Firebird 1.5

Fabio Nascimento fhpnascimento em gmail.com
Qui Nov 28 10:54:54 -03 2013


Pessoal precisei retornar um resultado com zero a esquerda no firebird 1.5
que não tem ainda a função lpad e char_length, então fiz uma stored
procedure pra isso, de repente alguem pode precisar estou enviando aqui.

Abs
Fábio

SET TERM ^ ;

CREATE OR ALTER PROCEDURE PCHAR_LENGTH (
    entrada varchar(50))
returns (
    saida integer)
as
declare variable i integer;
begin

    i = 0;

    while (entrada <> '') do begin
        i = i + 1;
        entrada = substring(entrada from 2);
    end

    saida = i;

  suspend;
end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE PCHAR_LENGTH TO SYSDBA;

SET TERM ^ ;

CREATE OR ALTER PROCEDURE PFILL_WITH_ZERO (
    entrada varchar(50),
    qtde integer)
returns (
    saida varchar(50))
as
declare variable i integer;
declare variable tamanho integer;
begin

i = 0;

saida = entrada;
select * from pchar_length(:entrada) into tamanho;

while (i < (qtde-tamanho)) do begin
    saida = '0' || saida;
    i = i + 1;
end

suspend;

end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE PCHAR_LENGTH TO PROCEDURE PFILL_WITH_ZERO;

GRANT EXECUTE ON PROCEDURE PFILL_WITH_ZERO TO SYSDBA;



Mais detalhes sobre a lista de discussão lista