STRZERO no Firebird

Lembra daquela excelente função do Clipper (e outras linguagens) para colocar zeros à esquerda de uma string? Em um projeto precisei usá-la no meu bd em Firebird sem utilizar UDF para preencher automaticamente dígitos de crachá e outras funções. Segue DDL da Stored Procedure. Copie e cole no Script Executive do IBExpert ! Bom proveito.

SET TERM ^ ;

create or alter procedure STRZERO (
    STRING varchar(254),
    DIGITOS smallint = 1)
returns (
    RETORNO varchar(254))
as
declare variable AUX varchar(254) = '';
declare variable I integer = 0;
declare variable TAMANHOSTR integer;
begin
 
/* Coloca a quantidade informada no 2o parametros de "Zeros" a direita da string
     O parametro digitos e o tamanho maximo de digitos da string
     ex: string de 5 digitos com entrada '99' ficara '00099'                         */
  select char_length(trim(:string))
  from rdb$database
  into :tamanhostr;

  aux = '';
  while (i<(:digitos-:tamanhostr)) do
  begin
    aux= '0'||aux;
    i=i+1;
  end
  select :aux||trim(:string)
  from rdb$database
  into :retorno;
  suspend;
end^

SET TERM ; ^

COMMENT ON PARAMETER STRZERO.STRING IS
'string que se vai adicionar os zeros a direita';

COMMENT ON PARAMETER STRZERO.DIGITOS IS
'quantidade de digitos que a string conterá.';


GRANT EXECUTE ON PROCEDURE STRZERO TO SYSDBA;




Comentários

  1. Do Firebird 2.1 podemos usar o LPAD() para isso
    https://firebirdsql.org/refdocs/langrefupd21-intfunc-lpad.html

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

[resolvido] USB To Serial Prolific no Windows 7 e 8x e 10

Corrigir BAD_SYSTEM_CONFIG_INFO no Windows 7,8, 8.1, 10

Como Alterar o Perfil da Rede Pública para Privada no “Windows 8.1″ e “Windows Server 2012″