



Procedimento que reproduz a função LPAD para versões antigas do firebird
que não possuíam o suporte nativo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | CREATE OR ALTER PROCEDURE LPAD_X ( ITEXTO VARCHAR(50), ILENGTH SMALLINT, ICHAR CHAR(1)) RETURNS ( RETORNO VARCHAR(50)) AS DECLARE VARIABLE VLOOP SMALLINT; BEGIN -- ESSA STORED PROCEDURE PODE SER EXECUTADA PARA FIREBIRD 2.0 -- A PARTIR DA VERSAO 2.1 JA EXISTE A LPAD QUE SUBSTITUI ESSA RETORNO = :ITEXTO; IF ((:ILENGTH > 0) AND (:ICHAR <> '') AND (CHAR_LENGTH(:ITEXTO) < :ILENGTH)) THEN BEGIN VLOOP = 0; WHILE (VLOOP < (:ILENGTH - CHAR_LENGTH(:ITEXTO)))DO BEGIN RETORNO = :ICHAR || :RETORNO; VLOOP = VLOOP + 1; END END SUSPEND; END |
Exemplo de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT RETORNO FROM LPAD_X(C.CODIGO, 6, '0'); Retorno: 00000+resultado de C.CODIGO SELECT RETORNO FROM LPAD_X('123', 6, '0'); Retorno: 000123 SELECT RETORNO FROM LPAD_X('uia', 5, 'u'); Retorno: uuuia SELECT RETORNO FROM LPAD_X('123456', 6, '0'); Retorno: 123456 SELECT RETORNO FROM LPAD_X('123456789', 5, '0'); Retorno: 123456789 |
Enviada por Ivan Cesar